AttributeError: 'module' object has no attribute

15,956

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

  1. import(cv2)
  2. 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.

Share:
15,956
Ujjwal
Author by

Ujjwal

Updated on July 22, 2022

Comments

  • Ujjwal
    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 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.