OpenCV-Python断言错误:SAD算法-立体相机视差图计算

时间:2018-10-14 16:55:21

标签: python c++ opencv

我想使用SAD算法计算视差图,并且在运行代码时出现错误消息:     返回stereo.compute(left_image,right_image).astype(np.float32)/ 16.0 cv2.error:OpenCV(3.4.3)C:\ projects \ opencv-python \ opencv \ modules \ calib3d \ src \ stereosgbm.cpp:2156:error:(-215:Assertion failed)left.size()== right .size()&& left.type()== right.type()&& left.depth()==函数'cv :: StereoSGBMImpl :: compute'中的CV_8U

我的代码是:

left_image = cv2.imread('left.jpg')
right_image = cv2.imread('right.jpg')

def calc_disparity(left_image, right_image):
    window_size = 3
    min_disp = 1
    num_disp = 16
    stereo = cv2.StereoSGBM_create(
        minDisparity=min_disp,
        numDisparities=num_disp,
        blockSize = 5,
        # SADWindowSize=window_size,
        uniquenessRatio=10,
        speckleWindowSize=100,
        speckleRange=32,
        disp12MaxDiff=1,
        P1=8*3*window_size**2,
        P2=32*3*window_size**2,
        # fullDP=False

    )
    return stereo.compute(left_image, right_image).astype(np.float32) / 16.0

1 个答案:

答案 0 :(得分:0)

此断言失败的可能原因是:

  • 左右图像大小不一样
  • 左右图像类型不同
  • 左图的深度类型错误(需要CV_8U)

请确保您输入的图像具有上述条件(大小和类型相同)。