def cv2_match(im1, im2):
mysift = SIFT()
sift = cv2.SIFT()
bf = cv2.BFMatcher()
kp1, dp1 = sift.detectAndCompute(im1, None)
kp2, dp2 = sift.detectAndCompute(im2, None)
matches_ = bf.knnMatch(dp1, dp2, k=2)
print(len(matches_))
good = []
for m, n in matches_:
if m.distance < 0.90 * n.distance:
good.append(m)
print(len(good))
pos1 = [(int(kp.pt[1]), int(kp.pt[0])) for kp in kp1]
pos2 = [(int(kp.pt[1]), int(kp.pt[0])) for kp in kp2]
matches = [(m.queryIdx, m.trainIdx, 0.15) for m in good]
cv2.imwrite("cvkp1.jpg", cv2.drawKeypoints(im, kp1, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS))
cv2.imwrite("cvkp2.jpg", cv2.drawKeypoints(imm, kp2, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS))
mysift.draw_matches(im, pos1, imm, pos2, matches, 'ckmatch.jpg')
评论列表
文章目录