我正在尝试获取两个立体图像的深度图。我从http://docs.opencv.org/trunk/doc/py_tutorials/py_calib3d/py_depthmap/py_depthmap.html
获取了代码我收到以下错误:
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及更高版本?
请帮忙。
答案 0 :(得分:11)
使用此功能
stereo = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET,ndisparities=16, SADWindowSize=15)
您可以找到此功能的文档here
答案 1 :(得分:11)
cv2.StereoBM_create(numDisparities=16, blockSize=15)
试试吧。我的opencv版本是3.2。
如果你想找到在opencv中工作的任何功能,你可以尝试这个
- 进口(CV2)
- 帮助(CV2)
醇>
答案 2 :(得分:1)
您将从trunk(aka devel)文档中获取示例。如果您没有使用trunk版本,请尝试找到正确版本的示例。
答案 3 :(得分:1)
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文档中的代码