stereo_calib是OpenCV官方代码中提供的最正统的双目demo,无论数据集还是代码都有很好实现。
包括定义:
#define INTER_LINEAR_EXACT 1
以及
主要目的,就是确保输入的参数正确,图片能够被读到。
由于原始代码很贴心地将参数都设置正确了(可以参考下图,长为9、宽为6),所以可以放心实用。
确保标定的图片能够正确地读入进去。
二、代码解析
在能正确运行的基础上,我们来分析这段代码是如何产生作用的。
1)main函数
这个例程的main函数非常简单,蓝色框图部分,都是对输入参数进行准备;而在绿色部分,是程序本体。
2)StereoCalib
StereoCalib(const vector<string>& imagelist,
Size boardSize,
float squareSize,
bool displayCorners = false,
bool useCalibrated=true,
bool showRectified=true)
第二个参数是标定板的尺寸;
至于为什么是9*6,之前已经说明了;
这个函数很长,我们拣重要的来讲:
绿色框图部分,比较输入的图片是否为同样大小。这里不考虑非同样大小的情况。
最后,对于识别效果比较好的情况,全部推入goodImageList中去。对于官方提供的例子,13对图像全部为gooImageList,我们也可以根据这里入选的情况,判断当前采集图像的质量。
默认情况下是在原始大小下进行寻找,如果没有找到,则放大一次寻找,一旦找到,直接跳出循环。
根据得到角点结果,计算相机参数矩阵。正如我们知道的一样,是3*3矩阵。
这段是采用拟合的方法,计算误差。
这里是将标定的结果,序列化地保存下来。
标定应该只是一个过程,标定成功后的结果可以反复使用,所以这个操作消耗一些时间应该也是没有问题的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。