当前位置: 首页 > article >正文

OpenCV KeyPoint与描述子编解码

前言:OpenCV中的特征点对象与描述子对象分别由cv2.KeyPoint类与np.array类封装,与之相关的特征点检测与匹配等相关算法的输出、输入亦为cv2.KeyPoint对象与np.array描述子对象。因此,若使用OpenCV封装好的特征点检测与匹配算法不可避免的需要对cv2.KeyPoint对象与描述子对象进行编解码。

解码: 若使用特征点检测算法的输出的具体坐标信息、方向子信息、描述子信息等则需要对cv2.KeyPoint与描述子进行解码。可通用的解码代码如下:

def decode_kd(kp:cv2.KeyPoint, desc:np.array):
    kd_tpls = []
    for i in range(len(kp)):
        temp = {'pt': kp[i].pt, 
            'size': kp[i].size, 
            'angle': kp[i].angle, 
            'response': kp[i].response, 
            'octave': kp[i].octave, 
            'class_id': kp[i].class_id, 
            'desc': desc[i]}
        kd_tpls.append(temp)
    return kd_tpls

编码:若使用自定义的特征点与自定义的描述子进行OpenCV中匹配算法的调用则需要对自定义的特征点与描述子进行cv2.KeyPoint对象与np.array描述子对象编码(构建)。可通用的编码代码如下:

def encode_kd(kd_tpls:tuple):
    kp = []
    desc = []
    for i in range(len(kd_tpls)):
        k_temp = cv2.KeyPoint(x=kd_tpls[i]['pt'][0], 
                              y=kd_tpls[i]['pt'][1], 
                              size=kd_tpls[i]['size'], 
                              angle=kd_tpls[i]['angle'], 
                              response=kd_tpls[i]['response'], 
                              octave=kd_tpls[i]['octave'], 
                              class_id=kd_tpls[i]['class_id'])
        d_temp = kd_tpls[i]['desc']
        kp.append(k_temp)
        desc.append(d_temp)
    return kp, np.array(desc)


http://www.kler.cn/news/364873.html

相关文章:

  • 【MySQL数据库】MySQL高级语句(SQL语句进阶版)
  • ubuntu 安装haproxy
  • [网络协议篇] UDP协议
  • win10怎么卸载软件干净?电脑彻底删除软件的方法介绍,一键清理卸载残留!
  • Vxe UI vue vxe-table 虚拟树表格的使用,流畅的渲染万级数据树结构表格
  • Jackson Json序列化反序列化的两个坑
  • 搭建你的第一个Spring Cloud Alibaba微服务
  • Java | Leetcode Java题解之第492题构造矩形
  • 论文引用收录证明有什么用?
  • vue2之混入(mixin)
  • python的接口自动化的测试与实现java监测jsp源代码Mysql
  • 【React系列二】—React学习历程的分享
  • 2024 JavaScript 入门教程:语法、算法与重要知识点详解
  • 查看linux的版本
  • 电影评论网站开发:Spring Boot技术指南
  • K最近邻算法
  • TinTin Web3 动态精选:Vitalik 探讨以太坊协议,Solana ETN 开启质押功能
  • 数造科技荣获2024DAMA中国“数据治理创新奖”
  • Lua repeat-until循环
  • UEFI BIOSAPP编程开发查询手册.pdf
  • 最后一周征稿!第四届计算机、物联网与控制工程国际学术会议(CITCE 2024)
  • 中国游戏产业趋势是什么?附2024趋势以及潜力分析报告
  • 如何使用JMeter进行性能测试的保姆级教程
  • Mac安装 TIDB并启动集群
  • sqlite数据库数据迁移到mysql
  • Hallo 2:通过单张图像与音频生成1小时4K分辨率人像视频的人工智能技术解析