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 算法 - 立体相机视差图计算的主要内容,如果未能解决你的问题,请参考以下文章