这篇文章主要介绍了Python OpenCV中的drawMatches()怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python OpenCV中的drawMatches()怎么使用文章都会有所收获,下面我们一起来看看吧。
该方法被用于绘制关键点的匹配情况。我们看到的许多匹配结果都是使用这一方法绘制的——一左一右两张图像,匹配的关键点之间用线条链接。
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_path2, img_path3): # 读取两张图像 img1 = cv2.imread(img_path2, cv2.IMREAD_GRAYSCALE) img2 = cv2.imread(img_path3, cv2.IMREAD_GRAYSCALE) # 计算两张图像的SIFT描述符 kp1, des1, _ = sift_algorithm(img_path2) kp2, des2, _ = sift_algorithm(img_path3) # 创建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
关于“Python OpenCV中的drawMatches()怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python OpenCV中的drawMatches()怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。