Метод клона FlannBasedMatcher opencv не работает в Python - PullRequest
0 голосов
/ 23 декабря 2018

мой код с FlannBasedMather не очень хорошо работает в python.Он возвращает разные ключевые точки, соответствующие для каждого запуска.

Мой код: (Сравните совпавшую точку двух изображений)

def count_flann_match(img_1, img_2):
    # count matched point between img1 and img2
    kp1, des1 = ALG.detectAndCompute(read(img_1), None)
    kp2, des2 = ALG.detectAndCompute(read(img_2), None)

    cv2.FlannBasedMatcher().clear()
    flann = cv2.FlannBasedMatcher()
    matches = flann.knnMatch(des1, des2, k=2)

    # store all the good matches as per Lowe's ratio test.
    good = []
    for m, n in matches:
        if m.distance < 0.7*n.distance:
            good.append(m)

    good = list(set(good))

    return len(good)


img_list = ["50.png", "52.png", "55.png"] #list of my img
query = "1.png" #my query image

for image in img_list:
    print (count_flann_match(query, image))
# result 
# ([['50.png', 78], ['52.png', 2], ['55.png', 2]])

for image in img_list:
    print (count_flann_match(query, image))
# result 
# ([['50.png', 78], ['55.png', 1], ['52.png', 0]])    

, как я догадываюсь, это может быть неправильно, когда я вызываю объект из opencv.

Я пытаюсь clear() desc из класса, но это не работает.И clone() метод не поддерживается для Python, как я пытался.

flann = cv2.FlannBasedMatcher().clone(emptyTrainData=False) cv2.error: OpenCV(3.4.2) /io/opencv/modules/features2d/src/matchers.cpp:1362: error: (-213:The function/feature is not implemented) deep clone functionality is not implemented, because Flann::Index has not copy constructor or clone method in function 'clone'

Итак, кто-нибудь видел эту проблему и как исправить эту проблему в Python

...