【发布时间】:2017-09-29 02:20:32
【问题描述】:
我正在尝试将单个图像与图像数据库进行比较。
我目前正在使用 Python 2.7 和 OpenCV 3.3.0。
经过一番谷歌搜索,我想出了这段代码:
scanned = 'tests/temp_bw.png'
surf = cv2.xfeatures2d.SURF_create(400)
surf.setUpright(True)
img1 = cv2.imread(scanned, 0)
kp1, des1 = surf.detectAndCompute(img1, None)
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
for filename in os.listdir('images'):
img2 = cv2.imread('images/' + filename, 0)
kp2, des2 = surf.detectAndCompute(img2, None)
flann.add([des2])
print str(len(flann.getTrainDescriptors()))
print "Training..."
flann.train()
print "Matching..."
indexes, matches = flann.knnSearch(des1, 2, params={})
主要问题是在 OpenCV 3.3.0 中 FlannBasedMatcher 没有方法 knnSearch。我检查了当前的代码文档,在 2.4 中有这样的方法,现在它被删除了。
OpenCV 3.3.0 中有类似的东西吗?
还是我应该使用不同的方法?
【问题讨论】: