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.mzph.cn/news/883595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《一人公司:失业潮中的高新技术工作者》读书笔记

基本信息 书名:一人公司:失业潮中的高新技术工作者作者:[美]卡丽莱恩(Carrie M. Lane)出版社:广东人民出版社出版时间:2023年11月 内容简介 本书通过18个月的田野调查和9年的跟踪寻访&#…

部署DNS主从服务器

一。DNS主从服务器作用: DNS作为重要的互联网基础设施服务,保证DNS域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件&…

es(1)(仅供自己参考)

elasticsearch(ES)是一款非常强大的开源搜索引擎,可以帮助我们从海量的数据中快速找到需要的内容。 elastic stack(ELK):elasticsearch结合kibana、Logstash、Beats。被广泛的应用在日志数据分析、实时监控…

信创认证(信创人才考评证书)的含金量?到底有多少?

“信创认证”是什么? 信创认证是由工业和信息化部教育与考试中心推出的国家级权威认证,旨在推动信息技术应用创新产业的发展,并构建完善的信创产业人才培养体系。该认证在个人信息技术领域具有极高的认可度。 信创认证分为初级、中级和高级三…

新手铲屎官提问,有哪几款噪音低的宠物空气净化器推荐

相信很多铲屎官都明白的的痛就是猫咪掉毛太严重,所以每次看到满天飞的浮毛时只想赶紧逃离,一点都不想清理。但是家是自己的,猫是自己的,健康也是自己的,不清理也得清理。 为了更有效的清理浮毛,我朋友特意…

参会记录|2024 中国计算机大会(CNCC 2024)

前言:2024年10月24-26日,有幸在横店参加了2024年度的中国计算机大会(CNCC),本篇博客总结本人在会议期间收听的主要报告内容及收获。 2024.10.24 上午 夏苑海岳开襟 如何实现人工智能在现实场景中的落地? …

OgCloud参加HPE Discover More AI 2024,共建数智化未来!

10月16日,企业科技盛会HPE Discover More AI 2024在香港瑰丽酒店举行。本次大会Hewlett Packard Enterprise (HPE) 联同全球14个科技合作伙伴,聚焦于AI未来走势、混合云创新与边缘安全等领域,以主题演讲、技术展示、研讨会等形式进行&#xf…

从双斜率,野人除法看性能优化

人呐,天生对线性的推崇,却在内心又对线性的不爱。一开始人们总是从最简单的线性过程入手,但最终都难免因为不满足而进入指数过程。 看一个 Linux kernel 老式 O(1) 调度器的时间片计算函数的演化: 早期的 O(1) 是一个连续线性函…

vue 解决:npm ERR! code ERESOLVE 及 npm ERR! ERESOLVE could not resolve 的方案

1、问题描述: 其一、需求为: 想要安装项目所需依赖,成功运行 vue 项目,想要在浏览器中能成功访问项目地址 其二、问题描述为: 在 package.json 文件打开终端平台,通过执行 npm install 命令&#xff0c…

【MySQL】视图特性 用户管理

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是视图,我们又该如何管理用户。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…

kafka 如何减少数据丢失?

大家好,我是锋哥。今天分享关于【kafka 如何减少数据丢失?】面试题?希望对大家有帮助; kafka 如何减少数据丢失? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个高吞吐量的分布式消息队列,广泛用…

前端对一个增删改查的思考

1、来源:dify dify/web/app/components/workflow/nodes/question-classifier/components/class-list.tsx at main langgenius/dify GitHub 2、代码流程: 3、思索问题: 1、为啥要用return形式,而不是value直接当函数&#xff1…

SQL进阶技巧:如何求组内排除当前行的移动平均值?

目录 0 需求描述 2 数据准备 3 问题分析 4 小结 0 需求描述 -- 按照 日期,省份,等级 分组 求分数的平均值;但是需要剔除当前行的数据 2 数据准备 create table avgtest as (select 2024-10-24 as cdate, 广东 as province,深圳 as city, 2 as level, 200 as scoreunio…

ssm005基于SSM框架的购物商城系统的开发与实现(论文+源码)_kaic

设计题目:购物商城系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对…

【MyBatis】| JavaWeb基础教程学习笔记(上)

01-MyBatis简介 什么是MyBatis? MyBatis是一款优秀的持久层框架,用于简化JDBC开发MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github官网…

双11必买物品清单有哪些?双11推荐购买清单推荐分享

随着一年一度的“双十一”购物狂欢节的到来,各大电商平台纷纷推出了各种优惠活动和促销策略,让消费者在享受购物乐趣的同时也能获得实实在在的优惠。然而,面对琳琅满目的商品和纷繁复杂的促销活动,双11必买物品清单有哪些成为了一…

【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯迈向AGI的新跨越💯BoT与CoT的技术对比技术原理差异推理性能提升应用范围和通用性从错误中学习的能力总结 💯BoT的工作流程和机制初始化过程生成推…

网上摄影工作室:Spring Boot框架的应用实例

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

Redis——缓存

目录 前言 一、缓存基本概念 1.概念 2.二八定律 二、使用 Redis 作为缓存 三、缓存的更新策略 1.定期生成 2.实时生成 四、Redis 内存淘汰机制 1.通用淘汰策略 (1)FIFO (2)LRU (3)LFU &#…

buildroot制作自己的软件包(可以理解为应用程序)

以helloworld为例记录使用步骤 一&#xff1a;书写自己的源程序以及Makefile helloworld.c #include <stdio.h>int main(int argc, char **argv) {printf("hello world\r\n");return 0; }Makefile all: helloworldhelloworld: helloworld.o$(CC) -o hellow…