// #include #include #include #include #include "QuasiDenseStereo.h" using namespace std; char* FindFileName(char* filename) { char* result = strrchr(filename, '\\'); return result ? result + 1 : filename; } void main(int argc, char** argv) { assert(argc > 2); char *img1name, *img2name; img1name = argv[1]; img2name = argv[2]; char filename[70]; strcpy(filename, FindFileName(img1name)); char winname[70]; IplImage *img1, *img2, *disp; img1 = cvLoadImage(img1name, CV_LOAD_IMAGE_GRAYSCALE); img2 = cvLoadImage(img2name, CV_LOAD_IMAGE_GRAYSCALE); //cvNamedWindow("0", CV_WINDOW_AUTOSIZE ); //cvShowImage("0", img1); QuasiDenseStereo qds; qds.initialise(cvGetSize(img1)); qds.Param.BorderX = atoi(argv[3]); // borders around the image qds.Param.BorderY = atoi(argv[3]); qds.Param.N = atoi(argv[4]); // neighbours qds.Param.Ct = atof(argv[5]); // corre threshold for seeds qds.Param.Dg = atof(argv[6]); // disparity gradient qds.Param.WinSizeX = atoi(argv[7]); // corr window size qds.Param.WinSizeY = atoi(argv[7]); qds.Param.Tt = atoi(argv[8]); // propagation disparity int displvl = atoi(argv[9]); // disparity level sprintf(winname, "%s N=%i Ct=%g Dg=%i Wxy=%i Tt=%g Dlvl=%i", filename, qds.Param.N, qds.Param.Ct, qds.Param.Dg, qds.Param.WinSizeX, qds.Param.Tt, displvl); cout << "init ok" << endl; qds.process(img1,img2); cout << "process ok" << endl; disp = cvCreateImage(cvSize(qds.costWidth, qds.costHeight),IPL_DEPTH_8U,3); qds.getDisparityImage(disp, displvl); cvNamedWindow(winname, CV_WINDOW_AUTOSIZE ); cvShowImage(winname, disp); cvWaitKey(0); }