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

这里有两个问题:

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

    将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()

  • python - 使用立体图上的视差图计算实际距离-LMLPHP

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

    最佳答案

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

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

    关于python - 使用立体图上的视差图计算实际距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58777344/

    10-13 06:18