2016-04-22 8 views
3

I Beispiel in C++ gefunden: http://docs.opencv.org/3.0-beta/doc/tutorials/features2d/akaze_matching/akaze_matching.htmlWie verwenden Sie Akaze eröffnen CV auf Python

Aber es gibt kein Beispiel in Python zeigt, wie Sie mit dieser Funktion Detektor (auch konnte nicht mehr findet alles in Dokumentation über aKAZE gibt es ORB SIFT, SURF, usw., aber nicht das, was ich suche) http://docs.opencv.org/3.1.0/db/d27/tutorial_py_table_of_contents_feature2d.html#gsc.tab=0

kann jemand könnte mir teilen oder zeigen, wo ich Informationen, wie Bilder in python passen mit akaze finden kann?

Antwort

7

Ich bin nicht sicher, wo es zu finden, so wie ich es Arbeit machte, war durch diese Funktion, die den Brute-Force-Matcher verwendet:

def kaze_match(im1_path, im2_path): 
    # load the image and convert it to grayscale 
    im1 = cv2.imread(im1_path) 
    im2 = cv2.imread(im2_path) 
    gray1 = cv2.cvtColor(im1, cv2.COLOR_BGR2GRAY) 
    gray2 = cv2.cvtColor(im2, cv2.COLOR_BGR2GRAY)  

    # initialize the AKAZE descriptor, then detect keypoints and extract 
    # local invariant descriptors from the image 
    detector = cv2.AKAZE_create() 
    (kps1, descs1) = detector.detectAndCompute(gray1, None) 
    (kps2, descs2) = detector.detectAndCompute(gray2, None) 

    print("keypoints: {}, descriptors: {}".format(len(kps1), descs1.shape)) 
    print("keypoints: {}, descriptors: {}".format(len(kps2), descs2.shape))  

    # Match the features 
    bf = cv2.BFMatcher(cv2.NORM_HAMMING) 
    matches = bf.knnMatch(descs1,descs2, k=2) # typo fixed 

    # Apply ratio test 
    good = [] 
    for m,n in matches: 
     if m.distance < 0.9*n.distance: 
      good.append([m]) 

    # cv2.drawMatchesKnn expects list of lists as matches. 
    im3 = cv2.drawMatchesKnn(im1, kps1, im2, kps2, good[1:20], None, flags=2) 
    cv2.imshow("AKAZE matching", im3) 
    cv2.waitKey(0) 

Denken Sie daran, dass die Merkmalsvektoren binäre Vektoren sind. Daher basiert die Ähnlichkeit eher auf der Hamming-Distanz als auf der üblicherweise verwendeten L2-Norm oder euklidischen Distanz.

+0

es funktioniert dank – JeremyK

+0

ist der Verhältnistest korrekt? Es gibt mir eine Schlüsselpunktnummer anstelle eines Verhältnisses. – JeremyK

Verwandte Themen