openCV-python flannbasedmatcher比较2张图片

时间:2019-08-24 16:26:29

标签: python image opencv flann flannbasedmatcher

首先,对不起标题,我不知道如何命名。

现在,我正在使用openCV比较2张图像。

代码已从此处获取: https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html#flann-based-matcher

所以在我的代码中,我有:

orb = cv2.ORB_create()
kp1, des1 = orb.detectAndCompute(image, None)

这是要计算的描述符/关键点。

对于Flann匹配器,我具有以下内容:

FLANN_INDEX_LSH = 6
index_params = dict(algorithm=FLANN_INDEX_LSH, trees=5)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(index_params, search_params)

这与第二张图片的代码相同:

kp2, des2 = orb.detectAndCompute(image2, None)
matches = flann.knnMatch(des1, des2, k=2)

我还从某些来源看到这是如何实现Lowe比率测试:

good = []
for m_n in matches:
    if len(m_n) != 2:
        continue
    (m, n) = m_n
    if m.distance < acc * n.distance:
        good.append(m)

稍后我会同时合并两个图像:

matches = [item for sublist in matches for item in sublist] 
#This is needed because matches is a list of lists.
img3 = cv2.drawMatches(image, kp1, target, kp2, matches[:20], None, flags=2)
img4 = cv2.drawMatches(image, kp1, target, kp2, good[:20], None, flags=2)

结果我得到了这张图片:

enter image description here

上半部分是matches的内容,另一半是good

您能解释一下两者吗? 我到处都是,我仍然不知道我在做什么来构建good,很遗憾,只是复制粘贴一些代码而不知道它是什么。

0 个答案:

没有答案