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

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.mrgr.cn/news/58125.html

相关文章:

  • w外链如何跳转微信小程序
  • QT-使用QSS美化UI界面
  • cmd中运行python manage.py makemigrations
  • Matlab|基于氢储能的热电联供型微电网优化调度方法
  • PHP PDO:安全、灵活的数据持久层解决方案
  • Tcp_Sever(线程池版本的 TCP 服务器)
  • rtsp的2种收流模式
  • Qt 智能指针QScopedPoint用法
  • 【已解决】【hadoop】【hive】启动不成功 报错 无法与MySQL服务器建立连接 Hive连接到MetaStore失败 无法进入交互式执行环境
  • Golang | Leetcode Golang题解之第507题完美数
  • 将二维图像映射到三维场景使用NeRF在AMD GPU上
  • <自用> python 更新库命令
  • Codeforces Round 981 div3 个人题解(A~G)
  • AI学习指南深度学习篇-自注意力机制(Self-Attention Mechanism)
  • 基于 Python 的自然语言处理系列(43):Question Answering
  • 【C++差分数组】P10903 商品库存管理
  • 003:无人机概述
  • 【MySQL】数据库约束和多表查询
  • Hugging Face HUGS 加快了基于开放模型的AI应用的开发
  • 前端方案:播放的视频加水印或者文字最佳实践
  • 【蓝桥杯选拔赛真题78】python电话号码 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • 吊打ControlNet?全能型图像生成模型OmniGen问世,简单提示实现图像生成与精细编辑
  • Shopee虾皮登录不了的常见原因及解决方式
  • 百科知识|选购指南
  • 驱动-----向内核新加文件
  • Apache配置案例二:基于域名的虚拟主机搭建