zoukankan      html  css  js  c++  java
  • 机器学习进阶-案例实战-图像全景拼接-书籍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()

  • 相关阅读:
    AWVS 安全渗透扫描
    Nmon 监控结果分析
    Jmeter 插件图表分析
    Nmon 安装
    子母钟系统(卫星时钟系统)在医院网络中的架设与设计
    从NTP网络授时到社交GPS千奇百怪的应用方式
    NTP网络时钟系统技术参数与详细介绍
    GPS北斗子母钟系统在某机场系统中的应用
    GPS北斗时间频率信号源的定义及简介
    ntp对时服务器同步网络中计算机详细配置
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/10422152.html
Copyright © 2011-2022 走看看