开发者社区> 问答> 正文

在复现您的《基于OpenCV的双目摄像头测距(误差小)》时遇到右摄图像大幅偏移

您好,在学习双目测距时,看到您的文章,想自己复现。 但在复现过程中发现

remap(grayImageL, rectifyImageL, mapLx, mapLy, INTER_LINEAR);
        remap(grayImageR, rectifyImageR, mapRx, mapRy, INTER_LINEAR);

在这一步后,双目摄像头的右摄图像向左上方大幅偏移,如图

image.png

导致接下来的操作无法进行。 image.png

因为刚接触这类知识,不清楚哪里出了问题。有在怀疑是不是我在matlab标定获得的数据错误,或者是转换错误。

matlab标定导出的.mat文件 放在csdn中了,https://download.csdn.net/download/qq_43799658/85048615

劳烦您查阅,

内参stereoParams.CameraParameters1.IntrinsicMatrix
5367.29542245590	1.07917572769490	812.825267243678
0				5355.41546908377	388.910270667844
0				0				1
畸变参数
径向stereoParams.CameraParameters1.RadialDistortion	k1 k2 k3
-0.390513414343187	3.45914615104448

切向stereoParams.CameraParameters1.TangentialDistortion	p1 p2
-0.00460688272624458	0.000861374024645955


摄像头右
内参stereoParams.CameraParameters2.IntrinsicMatrix
5377.90256064511	-7.99009934086790	906.364412324312
0				5367.27353490545	502.664169567161
0				0				1
畸变参数
径向stereoParams.CameraParameters2.RadialDistortion	k1 k2 k3
-0.224587351975291	-15.8944396859647

切向stereoParams.CameraParameters2.TangentialDistortion	p1 p2
-0.00637152937193855	-0.000282521472169868


stereoParams.TranslationOfCamera2
-62.0858270469853	0.279762076655359	-1.95098955578726

stereoParams.RotationOfCamera2
0.999971481588594	-0.000863736248290349	0.00750266414050556
0.000790662805731260	0.999952279973393	0.00973717763735614
-0.00751071646645457	-0.00973096787103856	0.999924445847012

这是我自己转换后,适用于opencv的数据。 因为刚接触机器视觉不久,希望前辈能给我指点迷津,明示问题所在,恳求给出更改建议!谢谢!

展开
收起
游客sgc23x7p4grhe 2022-03-28 19:03:05 1833 0
1 条回答
写回答
取消 提交回答
  • 首先我们需要标定板,标定板可以通过打印棋盘图再粘到平整的板上。注意棋盘角点数量尽可能多,里我使用的是7 X 9个角点,每个方格的尺寸是2.50cmX 2.50cm。在OpenCV中调用findChessboardCorners()函数找到棋盘角点信息,再使用drawChessboardCorners()函数画出角点,调用cornerSubPix()函数得到棋盘角点的亚像素坐标,最后使用stereoCalibrate()函数进行双目标定,得出两个摄像头。

    2022-05-23 12:42:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低成本自动三维室内重建系统 立即下载
全景视频的播放及优化 立即下载
低代码开发师(初级)实战教程 立即下载