python opencv opencv3.0

python - AttributeError: el objeto ''módulo'' no tiene atributo ''ORB''



opencv opencv3.0 (1)

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.