使用已校准的双摄像头构成立体视觉系统,生成OpenCV深度图。

3
我希望您能帮助我继续使用openCV库编写代码,以便找到摄像机所看到的物体的深度值。
我已经完成了校准并找到了视差图,但我无法清楚地找到如何计算由相机拍摄的两张照片中每个像素的深度值的帮助。
有人可以帮忙吗? 谢谢。
2个回答

1

您可以使用以下公式计算点云的3D坐标:

Z = fB/D
X = (col-w/2)*Z/f
Y = (h/2-row)*Z/f

X、Y、Z是世界坐标,f是相机在校准后的像素焦距,B是基线或相机间距,D是视差;col、row表示图像中像素的列和行坐标,其尺寸为h、w。

但是,如果您成功地对相机进行了校准并获得了视差图,那么您必须已经知道这一点。校准和视差图计算比上述计算复杂一个数量级。


1

非常感谢,但我的问题是我想继续使用用于校准的代码。我使用了以下提供的代码:http://blog.martinperis.com/2011/01/opencv-stereo-camera-calibration.html我已经完成了最后一步,但我不知道这是什么意思: d = pointRightImage.X - pointLeftImage.X;所以我想也许有人可以有更简单的方法来计算openCV中的深度... - Rita M
我认为你链接的博客文章在这个时候已经不再有用了。顺便说一下,如果你正在从事计算机视觉方面的工作,不要被数学解释吓到,因为你需要学习并获得对所做的事情的数学洞察力。 - Seçkin Savaşçı
是的,我同意。我认为我的问题就出在这里了,如果我能从数学上理解他所说的“d = pointRightImage.X - pointLeftImage.X”是什么意思,那么我就可以编写自己的代码。 非常感谢您的建议,我会好好努力的。 - Rita M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接