opencv检测真实世界的坐标

时间:2013-01-19 12:16:59

标签: opencv coordinates stereoscopy

我已经从“学习OpenCV”一书中听过立体声实现。我有基本的,必要的,旋转,平移矩阵,我如何计算我点击的对象的真实世界位置?

1 个答案:

答案 0 :(得分:1)

您可以使用ReprojectTo3D

reprojectImageto3D函数需要视差图,图像和图像相同大小的输出数组。数组Q(视差 - 深度图)。

Q由stereoRectify函数计算 - > stereoRectify需要内在的相机矩阵,失真系数和相对旋转&两个摄像机之间的平移向量(R& T)。

要计算所有这些,请使用输出所有这些的stereoCalibrate函数。 http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html - 这是我提到的所有功能的链接。

因此,编码顺序的步骤是:

1> stereoCalibrate(现在使用来自同一相机的2个视图):得到失真系数,两个相机的固有矩阵和R& T.(你已经完成了)。

2 - ;计算视差并存储图像 - 使用此处显示的视差计算(3d reconstruction from 2 images without info about the camera)来了解预期哪种输入是第一个& reprojectImageto3D的第二个参数。

3>使用stereoRectify来获得Q。

4>将所有值插入reprojectImage to 3D以生成coords。输出数组_3dImage中的每个条目,即在每个像素,我们将有3个值存储在一起:对应于像素的x,y坐标和从Q计算的z坐标。这个z坐标基本上就是我们想要的。

计算视差图并使用Q获取_3dImage后,(i, j)的每个_3dImage都会有(x, y, z)个值。我甚至将它移植到PCL来观看3D图像,这就是它的外观。

这就是Disparity Map的样子

enter image description here

这是使用PCL的相应3D视图

enter image description here