你如何在python的Open CV中使用Akaze

Jer*_*myK 8 python opencv

我在c ++中找到了一些例子:http: //docs.opencv.org/3.0-beta/doc/tutorials/features2d/akaze_matching/akaze_matching.html

但是python中没有任何示例显示如何使用此功能检测器(在有关AKAZE的文档中也找不到任何更多内容,有ORB SIFT,SURF等,但不是我正在寻找的内容) http:// docs .opencv.org/3.1.0 /分贝/ D27/tutorial_py_table_of_contents_feature2d.html#gsc.tab = 0

有人可以分享或告诉我在哪里可以找到如何匹配python中的图像与akaze的信息?

Sal*_*ina 16

我不确定在哪里找到它,我使用它的方式是通过这个使用Brute Force匹配器的功能:

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) 
Run Code Online (Sandbox Code Playgroud)

请记住,特征向量是二元向量.因此,相似性基于汉明距离,而不是常用的L2范数或欧几里德距离(如果愿意).