我目前正在使用 FLANN 实现 LSH。
matches = flann.knnMatch(des1,k=2)
des1 是我的查询图像的二进制描述符,而 flann 是 flanbasedmatcher(使用 FLANN LSH 算法)变量,它具有图像数据库的所有二进制描述符。
如何输出 knnMatch 的结果?
我目前正在使用 FLANN 实现 LSH。
matches = flann.knnMatch(des1,k=2)
des1 是我的查询图像的二进制描述符,而 flann 是 flanbasedmatcher(使用 FLANN LSH 算法)变量,它具有图像数据库的所有二进制描述符。
如何输出 knnMatch 的结果?
您可能想看看这个链接 这是一个 opencv 示例,展示了如何使用 FlannBasedMatcher。有很多话题在谈论这个,你应该在提问之前更好地搜索。
编辑
我假设你有一个 FLANN 索引来匹配des1
,所以有一个函数可以返回是否匹配。
MIN_MATCH_COUNT = 10
def flann_match(des1):
matches = flann.knnMatch(des1, k=2)
# Check the distance to keep only the good matches.
matches = [m[0] for m in matches if len(m) == 2 and m[0].distance < m[1].distance * 0.75]
if len(matches < MIN_MATCH_COUNT)
return False
return True
这个实现非常简单,您需要使用cv2.findHomography()
(文档)来获得更好和更准确的结果,这取决于您的目标是什么。
希望能帮助到你。