匹配点过多

时间:2017-02-27 08:43:03

标签: python opencv knn surf

我试图创建一个脚本,给出2张钞票图像告诉我第一张图像是否出现在第二张图像上。如果第一张图像出现在第二张图片上,它可以正常工作,但如果没有,它会给我这样的东西:

enter image description here

许多点与第二张图像中的相同点(或非常接近)有关。你知道一种过滤方法吗?

这就是我的所作所为:

img1      = cv2.imread(trainImage    , 0)     # trainImage
mask      = cv2.imread(maskTrainImage, 0)     # trainMask
kp1, des1 = surf.detectAndCompute(img1,mask)
kp2, des2 = surf.detectAndCompute(img2, None)

index_params  = dict(algorithm = FLANN_INDEX_KDTREE, trees = 4)
search_params = dict(checks = 50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1,des2,k=2)
# store all the good matches as per Lowe's ratio test.
good = []
for m,n in matches:
     if (m.distance < 0.70*n.distance):
        good.append(m)

如果第二张图片中的所有匹配项完全相同或更接近,我可以删除所有匹配项,比如5 px或类似的东西?

0 个答案:

没有答案