cv2.drawMatches这个函数的使用方法
时间: 2024-04-30 15:17:17 浏览: 135
cv2.drawMatches是OpenCV中用于绘制两张图片中匹配的特征点的函数。它需要以下几个参数:
1. img1:第一张图片
2. keypoints1:第一张图片中的关键点
3. img2:第二张图片
4. keypoints2:第二张图片中的关键点
5. matches:特征点匹配关系(Match)数组
6. outImg:输出图像
7. matchColor:匹配点的颜色
8. singlePointColor:没有匹配的点的颜色
9. flags:绘制类型,默认为cv2.DrawMatchesFlags_DEFAULT
使用方法如下:
```
import cv2
img1 = cv2.imread('img1.jpg', 0)
img2 = cv2.imread('img2.jpg', 0)
# Initiate SIFT detector
sift = cv2.xfeatures2d.SIFT_create()
# 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
good = []
for m, n in matches:
if m.distance < 0.75 * n.distance:
good.append(m)
# Draw matches
img3 = cv2.drawMatches(img1, kp1, img2, kp2, good, None, flags=2)
cv2.imshow("Matches", img3)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码将在两张输入图片中计算SIFT特征点和描述符,并使用BFMatcher算法进行特征点匹配,然后应用比率测试过滤不正确的匹配点,并最终绘制所有正确匹配点的连接线。绘制的图像将显示在一个新窗口中,直到用户按下任意键为止。
阅读全文