使用opencv与摄像机的物距

时间:2013-04-27 09:04:31

标签: c++ opencv robotics

我想估计物体到相机的距离。这必须使用Opencv。 我读到我必须使用2个摄像头而不是一个,我用Matlab找到了一些代码,但我没有任何经验。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

是的,使用简单的针孔相机型号可以用两台相机计算深度:

depth = bcm*fcm/(sensorWidthCm*disparity/(float)horizontalResolution);

此处,为了找到平均差异(关键点的水平像素位置差异),您可以使用SurfDescriptorExtractor并查找匹配对,您可以在链接中使用BFMatcherhttp://docs.opencv.org/doc/tutorials/features2d/feature_description/feature_description.html

fcm,bcm,sensorWidthCm和horizo​​ntalResolution都是摄像机参数:fcm是摄像机焦距,bcm是摄像机的分离,sensorWidthCm是摄像机传感器宽度,而horizo​​ntalResolution是水平方向的像素编号。实际上,您不需要单独使用所有这些参数。您只需要尝试一些已知的深度来查找比率:bcm*fcm/sensorWidthCm在图像捕获过程中已知水平图像分辨率。

答案 1 :(得分:1)

  1. Is it possible to measure distance to object with camera?

  2. 请参阅此answer:

    distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels)
                              ---------------------------------------------------------------------------
                              object height (pixels) * sensor height (mm)
    

答案 2 :(得分:1)

您可以使用solvePnP功能,如果您知道对象的精确尺寸,则很容易检测到。您还需要运行摄像机校准以在摄像机坐标中设置单位测量。