мой код с 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