有了上篇单目标定示例程序的经验,双目标定就是小菜一碟哈。
本人目前菜鸟,但还是愿意厚着脸皮分享我一下午的成果。不要拍我...
1.找到目录 ...\OpenCV\sources\samples\cpp下的 stereo_calib.cpp、stereo_calib.xml 和 stereo_match.cpp以及26张图片了(left01-14 right01-14)。
其中,stereo_calib.cpp是使用张正友的方法进行双目标定,stereo_calib.xml 是输入图片的列表,stereo_match.cpp是立体匹配、计算视差的部分
如图所示:
2.先运行stereo_calib.cpp,可以得到 intrinsics.yml和 extrinsics.yml 文件
步骤:新建项目,导入现有项,在main()函数下加入代码:
argc = 6;
argv[0] = "binocularStereoVision";//项目名称
argv[1] = "-w";
argv[2] = "9";
argv[3] = "-h";
argv[4] = "6";
argv[5] = "stereo_calib.xml";
如图所示:
然后,将资源文件stereo_calib.xml 以及26张图片 放入文件夹 ...\binocularStereoVision\binocularStereoVision (否则编译器找不到文件哈)
执行结果如图:并且在刚才的文件夹下多出 intrinsics.yml和 extrinsics.yml 文件(用于stereo_match.cpp计算视差)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
接下去运行 stereo_match.cpp ,方法大同小异。
添加输入参数的代码:在main()函数里加入
argc = 8;
argv[0] = "demoDCamera";//用项目名称,我的是demoDCamera
argv[1] = "left01.jpg";
argv[2] = "right01.jpg";
argv[3] = "--algorithm=bm";
argv[4] = "-i";
argv[5] = "intrinsics.yml";
argv[6] = "-e";
argv[7] = "extrinsics.yml";
添加资源文件:在...\demoDCamera\demoDCamera(项目名称,我的是demoDCamera)文件夹下放入26张图片,以及 intrinsics.yml和 extrinsics.yml 文件(之前得到的结果哈)如图所示:
运行结果如下:得到视差并显示(第三幅)