import cv2
import matplotlib.pyplot as plt
img_1 = cv2.imread(
r"C:\Users\Administrator\Desktop\yuantu.jpg"
)
img_2 = cv2.imread(
r"C:\Users\Administrator\Desktop\jietu.jpg"
)
img_1 = cv2.cvtColor(img_1, cv2.COLOR_BGR2GRAY)
img_2 = cv2.cvtColor(img_2, cv2.COLOR_BGR2GRAY)
plt.imshow(img_1)
brisk = cv2.BRISK_create()
(kpt_1, desc_1) = brisk.detectAndCompute(img_1, None)
(kpt_2, desc_2) = brisk.detectAndCompute(img_2, None)
bk_img_1 = img_1.copy()
bk_img_2 = img_2.copy()
out_img = img_1.copy()
out_img_1 = img_1.copy()
out_img_2 = img_2.copy()
out_img_1 = cv2.drawKeypoints(bk_img_1, kpt_1, out_img_1)
out_img_2 = cv2.drawKeypoints(bk_img_2, kpt_2, out_img_2)
plt.figure(2)
plt.imshow(out_img_1)
plt.figure(3)
plt.imshow(out_img_2)
matcher = cv2.BFMatcher()
matches = matcher.knnMatch(desc_1, desc_2, k = 2)
#print(matches)
good = []
cnt = 0
for m, n in matches://筛选
if m.distance < 0.6 * n.distance:
good.append(m)
cnt += 1
#matches.sort(None, None)
dp = dict(matchColor = (0, 255, 0),#green
singlePointColor = None,
matchesMask = None,#draw only inliers
flags = 2)
out_img_3 = cv2.drawMatches(img_1, kpt_1, img_2, kpt_2, good, None, **dp)
plt.figure(5)
plt.imshow(out_img_3)
plt.show()
利用brisk算法进行图像匹配