pos outimage not found drawkeypoints argument opencv python-2.7 flann

outimage - OpenCV Python: sin función drawMatchesknn



drawkeypoints opencv python (2)

Cuando traté de usar la función drawMatchesKnn como se menciona en este tutorial para la coincidencia de funciones de FLANN, recibo el siguiente error

AttributeError: el objeto ''module'' no tiene atributo ''drawMatchesKnn''

Comprobé con otros recursos que el método drawMatchesKnn está presente en opencv.

¿Por qué recibo este error?

Gracias por adelantado


Necesita utilizar OpenCV versión 3. drawMatchesKnn() está presente en 3.0.0-alfa pero no en 2.4.11

Ese error está ahí, porque estás usando una versión anterior de OpenCV.


Las funciones cv2.drawMatches y cv2.drawMatchesKnn no están disponibles en las versiones más nuevas de OpenCV 2.4. @rayryeng proporcionó una alternativa ligera que funciona igual que para la salida de DescriptorMatcher.match . La diferencia con DescriptorMatcher.knnMatch es que las coincidencias se devuelven como una lista de listas. Para usar la alternativa @rayryeng, las coincidencias se deben extraer en una lista en 1-D.

Por ejemplo, el tutorial Brute-Force Matching con SIFT Descriptors y Ratio Test podría modificarse como tal:

# BFMatcher with default params bf = cv2.BFMatcher() matches = bf.knnMatch(des1,des2, k=2) # Apply ratio test good = [] for m,n in matches: if m.distance < 0.75*n.distance: # Removed the brackets around m good.append(m) # Invoke @rayryeng''s drawMatches alternative, note it requires grayscale images gray1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY) gray2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY) drawMatches(gray1,kp1,gray2,kp2,good)