Opencv cv2.BFMatcher没有看到相似之处

时间:2018-11-09 20:36:20

标签: python opencv

例如,我尝试与图像进行比较:enter image description hereenter image description here

代码在下面。

我的输出:'(len(matches))'= 0-没有匹配项。另外,输出的图像没有线条(标志),为什么没有匹配项?

我尝试使用示例代码中的图片来完成此操作,

这种方法中没有人起作用:

cv2.NORM_HAMMING
cv2.NORM_HAMMING2
cv2.NORM_L1
cv2.NORM_L2SQR
cv2.NORM_MINMAX
cv2.NORM_RELATIVE
cv2.NORM_TYPE_MASK


img1 = cv2.imread('3.jpg',0)
img2 = cv2.imread('3q3.jpg',0)
orb = cv2.ORB_create()

kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)

bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)

matches = bf.match(des1,des2)
matches= sorted(matches, key=lambda x:x.distance)
print(len(matches))
for m in matches:
    print(m.distance)

img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10],None, flags=2)
cv2.imshow('s',img3)
cv2.waitKey(0)

1 个答案:

答案 0 :(得分:0)

似乎没有检测到裁切图像的任何关键点。如果降低edgeThreshold(默认值= 31),则它可以检测更多功能。这是通过以下方式完成的:

orb = cv2.ORB_create(edgeThreshold=8)

这为裁剪后的图像提供了关键点,并且能够进行匹配:

enter image description here