使用立体图上的视差图计算实际距离

我正在尝试使用以下代码计算物体与相机的距离。 因此,方法是计算矩阵格式的左右图像的视差。 得到视差后,我将使用公式Depth = Baseline *焦距/视差

这里有两个问题:

  1. 为什么深度变为负数?
  2. 以及如何使用深度矩阵获得物体与摄像机的实际距离。深度矩阵基本上给出了我不需要的每个点的距离。我想以米为单位计算物体的实际距离。

    将numpy导入为np 导入系统 导入cv2 从matplotlib导入pyplot作为plt %matplotlib内联

    imgL = cv2.imread('C:/ Users / Akash Jain / Documents / ZED / LeftDepth / left000005.png',0) imgR = cv2.imread('C:/ Users / Akash Jain / Documents / ZED / RightDepth / right000005.png',0)

    立体声= cv2.StereoBM_create(numDisparities = 16,blockSize = 5) 视差= stereo.compute(imgL,imgR) D = 0.12 * 0.70 * 672 /视差 打印(“视差”,视差) 打印(“深度”,D) plt.imshow(视差,'灰色') plt.show()

使用立体图上的视差图计算实际距离

使用立体图上的视差图计算实际距离

wnykdc 回答:使用立体图上的视差图计算实际距离

简单的Depth = Baseline * focal length/ Disparity公式仅在摄像机轴平行的情况下有效。假设您的匹配良好,则采用趾(会聚轴)相机会在图像平面的某些部分造成负视差。

但是,您发布的视差图像也似乎质量很差,这使我怀疑您的匹配也很差:在您的场景下,视差在低中部如此剧烈地摆动是否合理? / p>

本文链接:https://www.f2er.com/3133658.html

大家都在问