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

Posted

技术标签:

【中文标题】OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算【英文标题】:OpenCV - Python Assertion Error : SAD algorithm - Stereo Camera Disparity Map Calculation 【发布时间】:2018-10-14 16:55:21 【问题描述】:

我想使用 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_8U in function 'cv::StereoSGBMImpl::compute'

我的代码是:

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】:

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

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

请确保您输入的图片符合上述条件(相同大小和类型)。

【讨论】:

以上是关于OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算的主要内容,如果未能解决你的问题,请参考以下文章

opencv 读取图像断言失败

SAD算法在opencv上的实现代码(c++)

OpenCV 错误:互相关中的断言失败

OPENCV / C++: approxpolydp 断言失败错误

Python,opencv匹配模板错误

调试断言错误 - OpenCV