Python OpenCV中的drawMatches()关键匹配绘制方法
作者:乔卿 时间:2022-10-31 22:36:57
作用说明
该方法被用于绘制关键点的匹配情况。我们看到的许多匹配结果都是使用这一方法绘制的——一左一右两张图像,匹配的关键点之间用线条链接。
函数原型
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg, matchesThickness[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatchesKnn(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
参数详解
img1:第一张原始图像。
keypoints1:第一张原始图像的关键点。
img2:第二张原始图像。
keypoints2:第二张原始图像的关键点。
matches1to2:从第一个图像到第二个图像的匹配,这意味着keypoints1[i]在keypoints2[Matches[i]中有一个对应的点。
outImg:绘制结果图像。
matchColor:匹配连线与关键点点的颜色,当
matchColor==Scalar::all(-1)
时,代表取随机颜色。singlePointColor:没有匹配项的关键点的颜色,当
singlePointColor==Scalar::all(-1)
时,代表取随机颜色。matchesMask:确定绘制哪些匹配项的掩码。如果掩码为空,则绘制所有匹配项。
flags:绘图功能的一些标志。具体有:
cv.DRAW_MATCHES_FLAGS_DEFAULT
cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS
cv.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG
cv.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS 代码实例
def bf_match(img_path1, img_path2):
# 读取两张图像
img1 = cv2.imread(img_path1, cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread(img_path2, cv2.IMREAD_GRAYSCALE)
# 计算两张图像的SIFT描述符
kp1, des1, _ = sift_algorithm(img_path1)
kp2, des2, _ = sift_algorithm(img_path2)
# 创建BFMatcher实例
bf = cv2.BFMatcher()
# 获得最佳匹配
matches = bf.match(des1, des2)
# 绘制匹配结果
# matches = sorted(matches, key = lambda x:x.distance)
match_result = cv2.drawMatches(img1, kp1, img2, kp2, matches, None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
# 显示绘制结果
plt.imshow(match_result)
plt.show()
return match_result
结果
来源:https://qiaoxs.blog.csdn.net/article/details/124651286
标签:Python,OpenCV,drawMatches,关键,匹配,绘制
0
投稿
猜你喜欢
IA学习笔记02:组织体系
2009-06-12 12:22:00
擦亮自己的眼睛去看SQL Server之历史渊源
2011-08-29 15:40:53
mYsql日期和时间函数不求人
2024-01-24 03:51:11
一文带大家了解Go语言中的内联优化
2024-02-19 15:47:19
按钮表状态还是表动作?
2009-03-23 18:21:00
python的flask框架难学吗
2023-08-18 15:34:32
MySQL中的binlog相关命令和恢复技巧
2024-01-22 20:42:08
Python+OpenCV 实现简单的高斯滤波(推荐)
2021-07-18 20:31:26
mysql 计算函数详情
2024-01-14 05:19:09
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2022-04-16 19:40:58
DOS命令行窗口mysql中文显示乱码问题解决方法
2024-01-26 13:53:44
怎么解决pycharm license Acti的方法
2022-12-27 10:36:39
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2023-12-09 06:16:18
python使用Matplotlib绘制分段函数
2022-04-17 16:07:17
很酷的JQuery Solar System
2007-12-15 08:09:00
python实现日常记账本小程序
2023-09-06 18:00:49
Python详细讲解浅拷贝与深拷贝的使用
2023-01-01 03:00:10
mysql中自增auto_increment功能的相关设置及问题
2024-01-16 09:34:13
详细说明关于Java的数据库连接(JDBC)
2024-01-18 09:00:16
Python面向对象类的继承实例详解
2023-04-19 11:06:38