OpenCV3.2.0 双目标定+立体匹配(官方自带例子的使用方法)

OpenCV3.2.0 双目标定+立体匹配(官方自带例子的使用方法)

1.设置stereo_calib.cpp运行路径

转载: https://blog.csdn.net/roslei/article/details/78673657
int main(int argc, char** argv)
{
Size boardSize;
string imagelistfn;
bool showRectified;
cv::CommandLineParser parser(argc, argv, “{w|9|}{h|6|}{s|1.0|}{nr||}{help||}{@input|E:/vsdemo/stereo_calib_opencv/stereo_calib/stereo_calib/stereo_calib.xml|}”);
if (parser.has(“help”))
return print_help();

需要修改成{@input|D:/…/stereo_calib/stereo_calib/stereo_calib.xml|}");格式
写路径时注意 一定要使用“/” 。

2.编译好代码,来看看运行参数

转载: https://blog.csdn.net/LEOLUZE/article/details/79709536
“Usage:\n ./stereo_calib -w= -h= -s= \n”
**-w -h -s默认参数是9 6 1.0,**坑就在这里,习惯地以为这是棋盘格的格子数目,但是仔细去查阅代码里面的这个函数

findChessboardCorners(timg, boardSize, corners,
CALIB_CB_ADAPTIVE_THRESH | CALIB_CB_NORMALIZE_IMAGE);
之前打log发现是这个函数找不到角点,但是确认自己格子是12*9的,格子大小是3cm(也就是这个s的单位,根据自己标定板的每个小格子大小来改).而w h(对于函数里面的boardsize),它并不是格子数目!而是格子内的交点数目!比如说下面这个棋盘格,在这个函数里面的参数应该就是-w=11,-h=8.

OpenCV3.2.0 双目标定+立体匹配(官方自带例子的使用方法)_第1张图片

3. EuRoC.yaml参数设定

参考:
https://blog.csdn.net/zc850463390zc/article/details/48975263

https://blog.csdn.net/xiaoxiaowenqiang/article/details/79687144

4.注意:

4.1报错:
error: (-212) Examples/Stereo/EuRoC.yaml(85): Incorrect indentation in function icvYMLSkipSpaces
解决方法:按照标准格式配置EuRoC.yaml文件,一定要注意不能中文半角下的空格、回车
4.2事先标定好的右相机的内参矩阵
/事先标定好的右相机的内参矩阵
fx 0 cx
0 fy cy
0 0 1
/
Mat cameraMatrixR = (Mat_(3, 3) << 296.92709649579353, 0, 313.1873142211607,
0, 300.0649937238372, 217.0722185756087,
0, 0, 1);
Mat distCoeffR = (Mat_(4, 1) << -0.23753878535018613, 0.03338842944635466, 0.0026030620085220105, -0.0008840126895030034);
4.2.2
#stereo baseline times fx
Camera.bf: 47.90639384423901

你可能感兴趣的:(OpenCV3.2.0 双目标定+立体匹配(官方自带例子的使用方法))