AttributeError:'模块'对象没有属性

问题描述 投票:9回答:4

我正在尝试获取两个立体图像的深度图。我已经从this documentation中获取了代码。

我收到以下错误:

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)

createStereoBM中没有称为cv2的功能。

顶部的链接中的代码是否错误?我在Ubuntu 12.04中使用Python 2.7.3。该代码是否可能适用于Python 3及更高版本?

请帮助。

python opencv ubuntu stereo-3d
4个回答
11
投票
改为使用此功能

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

您可以找到此功能的文档here

12
投票
cv2.StereoBM_create(numDisparities=16, blockSize=15)

尝试一下。我的opencv版本是3.2。

如果您想在opencv中找到任何可用的功能,可以尝试此操作

    import(cv2)
  1. help(cv2)

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
投票
您从行李箱(又名devel)文档中获取示例。如果您使用的不是主干版本,请尝试查找正确版本的示例。
© www.soinside.com 2019 - 2024. All rights reserved.