AttributeError: el objeto ‘módulo’ no tiene atributo ‘ORB’

cuando corro mi código python

import numpy as np import cv2 import matplotlib.pyplot as plt img1 = cv2.imread('/home/shar/home.jpg',0) # queryImage img2 = cv2.imread('/home/shar/home2.jpg',0) # trainImage # Initiate SIFT detector orb = cv2.ORB() # find the keypoints and descriptors with SIFT kp1, des1 = orb.detectAndCompute(img1,None) kp2, des2 = orb.detectAndCompute(img2,None) # create BFMatcher object bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) # Match descriptors. matches = bf.match(des1,des2) # Sort them in the order of their distance. matches = sorted(matches, key = lambda x:x.distance) # Draw first 10 matches. img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10], flags=2) plt.imshow(img3),plt.show() 

Me sale este error:

 AttributeError: 'module' object has no attribute 'ORB' 

Estoy usando python3 y opencv3

También encontré esto. Verifiqué el contenido real del módulo cv2 y encontré ORB_create() lugar de ORB()

Usa la linea

 orb = cv2.ORB_create() 

en lugar de orb = cv2.ORB() y funcionará.

Verificado en Python 3.4, OpenCV 3 en Windows, usando el conjunto de datos de prueba OpenCV box.png y box_in_scene.png con los siguientes resultados. Tenga en cuenta que debe colocar None para outImg en la línea img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10], flags=2) también – vea mi respuesta a su otra pregunta.

salida de escena de caja