python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python OpenCV drawMatches()

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

参数详解

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

结果

到此这篇关于Python OpenCV中的drawMatches()关键匹配绘制方法的文章就介绍到这了,更多相关Python OpenCV drawMatches() 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文