属性错误:'模块'对象没有属性

9
我正在尝试获取两个立体图像的深度图。 我已经从这份文档中获取了代码。
我遇到了以下错误:
Traceback (most recent call last):
  File "depth.py", line 9, in <module>
    stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
AttributeError: 'module' object has no attribute 'createStereoBM'

我的代码是:

import numpy as np
import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread('tsukuba_l.png',0)
imgR = cv2.imread('tsukuba_r.png',0)

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

我进入了Python行解释器,并写下了以下代码:

import cv2
help(cv2)

cv2中没有名为createStereoBM的函数。

链接提供的代码有误吗?我正在使用Ubuntu 12.04中的Python 2.7.3。 这段代码是不是只适用于Python 3及以上版本?

请帮忙解答。


你正在使用的代码来自于OpenCV主分支/3.0分支。(是的,在那里你必须使用cv2.createStereoBM()而不是cv2.StereoBM())如果想查看更多示例,请使用2.4分支。请访问以下链接:https://github.com/Itseez/opencv/tree/2.4/samples/python2 - berak
1
我必须在OpenCV 3.0.0-beta版本中使用cv2.StereoBM_create()。 - fdermishin
4个回答

12

cv2.StereoBM_create(numDisparities=16, blockSize=15)

请尝试。我的opencv版本是3.2。

如果您想查找在opencv中工作的任何函数,则可以尝试以下操作

  1. 导入(cv2)
  2. 帮助(cv2)

11

请使用此函数代替

stereo = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET,ndisparities=16, SADWindowSize=15)

您可以在这里找到此函数的文档。


1
但不适用于>= 3.x版本。这个是可行的:https://dev59.com/IXzaa4cB1Zd3GeqPPF0a#43661169 - Dzwiedziu-nkg

2
import numpy as np

import cv2

from matplotlib import pyplot as plt

imgL = cv2.imread('l.png',0)

imgR = cv2.imread('r.png',0)

stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)

disparity = stereo.compute(imgL,imgR)

plt.imshow(disparity,'gray')

plt.show()  

如果你正在使用open-cv文档中的代码,请尝试使用这段代码。


1

您正在获取来自主干(也称为开发版)文档的示例。如果您没有使用主干版本,请尝试找到适用于您正确版本的示例。


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