AttributeError: 'module' object has no attribute
Solution 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
Solution 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)
Solution 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
Solution 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.
Ujjwal
Updated on July 22, 2022Comments
-
Ujjwal almost 2 years
I am trying to get the depth map of two stereo images. I have taken the code from this documentation.
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
incv2
.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.