• 机器学习进阶-案例实战-图像全景拼接-书籍SIFT特征点连接 1.cv2.drawMatches(对两个图像的关键点进行连线操作)


    1.cv2.drawMatches(imageA, kpsA, imageB, kpsB, matches[:10], None, flags=2)  # 对两个图像关键点进行连线操作

    参数说明:imageA和imageB表示图片,kpsA和kpsB表示关键点, matches表示进过cv2.BFMatcher获得的匹配的索引值,也有距离, flags表示有几个图像

    书籍的SIFT特征点连接:

       第一步:使用sift.detectAndComputer找出关键点和sift特征向量

       第二步:构建BFMatcher()蛮力匹配器,bf.match匹配sift特征向量,使用的是欧式距离

       第三步:根据匹配结果matches.distance对matches按照距离进行排序

       第四步:进行画图操作,使用cv2.drawMatches进行画图操作

    import cv2
    import numpy as np
    
    #读入图片
    imgA = cv2.imread('box.png', 0)
    imgB = cv2.imread('box_in_scene.png', 0)
    
    
    
    
    def cv_show(img, name):
        cv2.imshow(name, img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    
    # 第一步:构造sift,求解出特征点和sift特征向量
    sift = cv2.xfeatures2d.SIFT_create()
    kpsA, dpA = sift.detectAndCompute(imgA, None)
    kpsB, dpB = sift.detectAndCompute(imgB, None)
    
    # 第二步:构造BFMatcher()蛮力匹配,匹配sift特征向量距离最近对应组分
    bf = cv2.BFMatcher()
    # 获得匹配的结果
    matches = bf.match(dpA, dpB)
    
    #第三步:对匹配的结果按照距离进行排序操作
    matches = sorted(matches, key=lambda x: x.distance)
    
    # 第四步:使用cv2.drawMacthes进行画图操作
    ret = cv2.drawMatches(imgA, kpsA, imgB, kpsB, matches[:10], None, flags=2)
    
    cv2.imshow('ret', ret)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

  • 相关阅读:
    搭建自己的博客(三十一):为评论以及回复添加邮箱提醒
    gl-transitions 【68个转场效果图】
    frei0r-1.7.0 20191207-0d4b342 DLLs
    Win10资源管理器始终使用详细视图模式
    gcc posix sjij for MSYS 9.2.1+
    mingw32-gcc-9.2.1-i686-posix-sjlj-20190904-8ba5c53
    Newtonsoft.Json高级用法
    在线文档预览方案-office web apps
    我的前端学习历程
    我是怎么使用最短路径算法解决动态联动问题的
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/10422152.html
Copyright © 2020-2023  润新知