3

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

4

3 回答 3

3

是的,绝对可以使用简单的针孔相机模型用两个相机计算深度:

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

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

fcm、bcm、sensorWidthCm和horizo​​ntalResolution都是相机参数:fcm是相机焦距,bcm是相机间距,sensorWidthCm是相机传感器宽度,horizo​​nResolution是水平方向的像素数。事实上,您并不需要单独使用所有这些参数。您只需要尝试一些已知的深度即可找到比率:bcm*fcm/sensorWidthCm在图像捕获过程中,水平图像分辨率是已知的。

于 2013-04-27T09:29:47.220 回答
1
  1. 可以用相机测量到物体的距离吗?

  2. 看到这个答案:

    distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels)
                              ---------------------------------------------------------------------------
                              object height (pixels) * sensor height (mm)
    
于 2013-04-27T09:09:59.293 回答
1

如果您知道对象的精确尺寸,则可以使用solvePnP函数,并且很容易检测。您还需要运行相机校准以在相机坐标中设置单位度量。

于 2013-04-27T11:02:57.490 回答