问题
I am trying to get the depth map of two stereo images. I have taken the code from http://docs.opencv.org/trunk/doc/py_tutorials/py_calib3d/py_depthmap/py_depthmap.html
I get the following error:
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'
My code is:
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()
I entered the Python line interpreter, and wrote the following code:
import cv2
help(cv2)
There is no function called 'createStereoBM' in cv2.
Is the code wrong in the link provided at the top? I am using Python 2.7.3 in Ubuntu 12.04. Is it possible that the code is meant for Python 3 and above?
Please help.
回答1:
Use this function instead
stereo = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET,ndisparities=16, SADWindowSize=15)
You can find documentation for this function here
回答2:
cv2.StereoBM_create(numDisparities=16, blockSize=15)
Try it. My opencv version is 3.2.
If you want to find any function working in opencv, you can try this
- import(cv2)
- help(cv2)
回答3:
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()
try to use this code is your using the code from open-cv documentation
回答4:
You are getting the example from the trunk (aka devel) documentation. if you aren't using trunk version, try to find an example for your correct version.
来源:https://stackoverflow.com/questions/21702945/attributeerror-module-object-has-no-attribute