我想匹配一个图片与数据库,其中包含约1000张图片。我希望在收到一张图片作为输入后,该程序返回数据库中最相似的图片。
import numpy as np
import cv2
import os
scanned = 'input.jpg'
orb = cv2.ORB_create()
FLANN_INDEX_LSH = 6
flann_params = dict(algorithm = FLANN_INDEX_LSH, table_number = 10, key_size = 20, multi_probe_level = 0)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(flann_params,search_params)
des_all = None
for filename in os.listdir('images'):
img2 = cv2.imread('images/' + filename, 0)
kp2, des2 = orb.detectAndCompute(img2,None)
flann.add([des2])
print ("Training...")
flann.train()
img1 = cv2.imread(scanned, 0)
kp1, des1 = orb.detectAndCompute(img1,None)
print ("Matching...")
matches = flann.knnMatch(des1,k=2)
在那之后,我必须做什么才能得到我的图像有最好的匹配?我如何使用匹配结果?我找不到任何有用的文档关于它谢谢你的帮助。
1条答案
按热度按时间pgky5nke1#
对于寻找最佳匹配,我有一个想法,为每个图片输入键和旧图片保存键:
然后返回每个好的匹配,最大的匹配就是你的结果当然更好的方法是使用Matlab中存在的MSER或FAST特性。使用他们的文档,他们字面上做你要求的。