def SIFTMATCH(img1,img2):
img1=img1.copy()
img2=img2.copy()
# find the keypoints and descriptors with SIFT
kp1, des1 = Sift.detectAndCompute(img1,None)
kp2, des2 = Sift.detectAndCompute(img2,None)
# BFMatcher with default params
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)
# Apply ratio test
matchesMask = [[0,0] for i in range(len(matches))]
for i,(m,n) in enumerate(matches):
if 0.55*n.distance<m.distance < 0.80*n.distance:
matchesMask[i]=[1,0]
# cv2.drawMatchesKnn expects list of lists as matches.
img3=None
draw_params=dict(matchesMask=matchesMask)
img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,flags=2,**draw_params)
# img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,img3,flags=2)
plt.imshow(img3,cmap='gray')
评论列表
文章目录