首先,对不起标题,我不知道如何命名。
现在,我正在使用openCV比较2张图像。
所以在我的代码中,我有:
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)
结果我得到了这张图片:
上半部分是matches
的内容,另一半是good
。
您能解释一下两者吗?
我到处都是,我仍然不知道我在做什么来构建good
,很遗憾,只是复制粘贴一些代码而不知道它是什么。