gpt4 book ai didi

python - 使用 SURF 和 FLANN 比较图像与图像数据库

转载 作者:行者123 更新时间:2023-12-01 02:33:52 26 4
gpt4 key购买 nike

我正在尝试比较单个图像与图像数据库。
我目前使用的是 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中有类似的东西吗?
或者我应该使用不同的方法?

最佳答案

在 OpenCV 3.3.0 中,该函数称为 knnMatch

示例用法可以在此页面的基于 FLANN 的匹配器下找到: http://docs.opencv.org/trunk/dc/dc3/tutorial_py_matcher.html

<小时/>

编辑:抱歉,我现在意识到我误解了你。 knnSearch 函数现在位于 flann.Index() 下,可以按如下方式使用。确保描述符数据库和查询对象都是 float32

flann = cv2.flann.Index()
print "Training..."
flann.build(des_all, index_params)
print "Matching..."
indexes, matches = flann.knnSearch(des1, 2)

关于python - 使用 SURF 和 FLANN 比较图像与图像数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46473148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com