Vergleichen von surf-features in python opencv2.4
Habe ich zwei Bilder, die ich vergleichen möchte mit python und opencv.
Habe ich verstanden, gewusst wie: extrahieren von surf-features aus einer einzigen Bilder aus diesem Buch: Programming Computer Vision with Python.
Ich nutze die Funktionen wie folgt:
import cv2
from numpy import *
# read image
im = cv2.imread('empire.jpg')
# downsample
im_lowres = cv2.pyrDown(im)
# convert to grayscale
gray = cv2.cvtColor(im_lowres,cv2.COLOR_RGB2GRAY)
# detect feature points
s = cv2.SURF()
mask = uint8(ones(gray.shape))
keypoints = s.detect(gray,mask)
# show image and points
vis = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)
for k in keypoints[::10]:
cv2.circle(vis,(int(k.pt[0]),int(k.pt[1])),2,(0,255,0),-1)
cv2.circle(vis,(int(k.pt[0]),int(k.pt[1])),int(k.size),(0,255,0),2)
cv2.imshow('local descriptors',vis)
cv2.waitKey()
Nun, wie kann ich Vergleiche ich die Eckdaten mit anderen sets von Eckdaten, die kommt aus einem Referenz-Bild mit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine FLANN-Implementierung von Python, OpenCV, ich habe es selbst und es funktioniert sehr gut. Zunächst war es nicht einfach, herauszufinden, aber die diese Frage hat mir sehr geholfen, siehe Esteban Angee ' s Antwort.
Können Sie auch einen Blick auf meine Antwort zu diese Frage, wo ich schnell erklärt den code. Ich wiederhole die Erklärung hier.
Konstruieren Sie den Parameter-Wörterbuch:
Durchführen, nächste-Nachbarn-Suche:
Gibt die Deskriptoren gefunden:
Passenden SURF-Deskriptoren erfolgt in der Regel mit k-nächsten Nachbarn (k=2). Sicher auch für C++, OpenCV hat eine eingebaute Klasse für diese Schnelle Ungefähre nearest neighbour-Deskriptor-matcher (FLANN_matcher), obwohl ich kann nicht scheinen, finden Sie alle Dokumente für Python-Versionen dieses. Vielleicht haben Sie einen Graben um, sehen, wenn Sie es finden können?
Wenn Sie am Ende brauchen, um dies zu tun, von Grund auf, dieser Beitrag hat ein gutes Codebeispiel mit
cv2.KNearest
, die definitiv ist in der Python-version.