属性错误: 模块 'cv2' 中没有 'createStereoBM' 属性。

7

我尝试运行OpenCV文档中创建左右立体图像视差图的代码,但是出现了错误。以下是我运行的代码:

import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread(r'D:\left.png', 0)
imgR = cv2.imread(r'D:\right.png', 0)

stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL, imgR)
plt.imshow(disparity, 'gray')
plt.show()

我在这一行中遇到了一个错误。
stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)

这是错误信息

AttributeError: module 'cv2' has no attribute 'createStereoBM'

我之前试过很多其他在stackoverflow、github和其他论坛上列出的解决方案,但它们似乎都不起作用。

可以在这里找到OpenCV文档的链接。

任何帮助都将不胜感激。谢谢。


1
你尝试过 stereo = cv2.StereoBM(numDisparities=16, blockSize=15) 吗?也就是说,从方法名中删除 create 前缀。 - wpercy
@wpercy 是的,我已经尝试过了。在那种情况下,我会在下一行disparity = stereo.compute(imgL, imgR)中出现错误。错误信息是TypeError: Incorrect type of self (must be 'StereoMatcher' or its derivative) - ntd
7
cv2.StereoBM_create(numDisparities=16, blockSize=15)怎么样? - Oluwafemi Sule
@OluwafemiSule 这对我很有用!非常感谢!我之前尝试过这种方法,但那时没有得到我期望的结果。所以这次我将 numDisparities 的值改为了 64,得到了我想要的结果。 - ntd
这个回答解决了你的问题吗?AttributeError:'module' object has no attribute - vwvw
1个回答

5
oluwafemi-sule在评论中提到的,你只需使用cv2.StereoBM_create而不是cv2.createStereoBM即可使其正常工作。

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接