公有属性

(float)angle:角度,表示关键点的方向,-1为初值。

(int)class_id:当要对图片进行分类时,我们可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设定

(int)octave:代表是从金字塔哪一层提取的得到的数据。

(Point2f)pt:关键点的点坐标

(float)response:响应程度,代表该点强壮大小—response代表着该关键点how good,更确切的说,是该点角点的程度。

(float)size:该点直径的大小

公有成员函数

三个构造函数

KeyPoint () : 默认构造函数

KeyPoint (Point2f _pt, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1)

参数
_pt : 关键点的x和y坐标
_size : 关键点直径
_angle : 关键点方向
_response:关键点上的关键点检测器响应(即关键点的强度)
_octave : 已检测到关键点的pyramid octave
_class_id: 关键点ID

KeyPoint (float x, float y, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1)

参数
x : 关键点的x坐标
y : 关键点的y坐标
_size : 关键点直径
_angle : 关键点方向
_response:关键点上的关键点检测器响应(即关键点的强度)
_octave : 已检测到关键点的pyramid octave
_class_id: 关键点ID

size_t hash () const

静态公有成员函数

static void convert (const std::vector< KeyPoint > &keypoints, std::vector< Point2f > &points2f, const std::vector< int > &keypointIndexes=std::vector< int >())

此方法将关键点的矢量转换为点矢量或反向,其中每个关键点被指定相同的大小和相同的方向。

参数
keypoints : 从任何特征检测算法(如SIFT / SURF / ORB)获得的关键点
points2f : 每个关键点的(x,y)坐标数组
keypointIndexes : 要转换为点的关键点的索引数组。(像掩码一样只转换指定的关键点)

static void convert (const std::vector< Point2f > &points2f, std::vector< KeyPoint > &keypoints, float size=1, float response=1, int octave=0, int class_id=-1)

这是一个重载的成员函数,为方便起见而提供。它与上述函数的不同之处仅在于它接受的参数。

参数
points2f : 每个关键点的(x,y)坐标数组
keypoints : 从任何特征检测算法(如SIFT / SURF / ORB)获得的关键点
size : 关键点直径
response : 关键点上的关键点检测器响应(即关键点的强度)
octave : 已检测到关键点的pyramid octave
class_id : 关键点 id

static float overlap (const KeyPoint &kp1, const KeyPoint &kp2)

此方法计算关键点对的重叠。重叠是关键点区域交叉区域与关键点区域联合区域之间的比率(将关键点区域视为圆圈)。如果它们不重叠,我们就会得到零。如果它们在相同大小的相同位置重合,我们得到1。

参数
kp1 : First keypoint
kp2 : Second keypoint

keypoint数据结构的更多相关文章

  1. opencv中keypoint数据结构分析

    分析opencv中keypoint数据结构的相关信息,找到opencv的document(http://docs.opencv.org/java/org/opencv/features2d/KeyPo ...

  2. OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...

  3. [opencv]keypoint数据结构分析

    KeyPoint这数据结构中有如下数据成员: angle:角度,表示特征点的方向,通过Lowe大神的论文可以知道,为了保证方向不变形,SIFT算法通过对特征点周围邻域进行梯度运算,求得该点方向.-1为 ...

  4. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  5. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  6. 深入浅出Redis-redis底层数据结构(上)

    1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...

  7. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

  8. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  9. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  10. 算法与数据结构(八) AOV网的关键路径

    上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的, ...

随机推荐

  1. Class文件解析

    1 准备工作 获取class文件byte[] public static byte[] getFileBytes(File file) { try (FileInputStream fileInput ...

  2. PW4052 是一颗适用于单节锂电池的、具有恒压/恒流充电模式的充电管理 IC

    PW4052 是一颗适用于单节锂电池的.具有恒压/恒流充电模式的充电管理 IC.该芯片采用开关型的工作模式, 能够为单节锂电池提供快速. 高效且简单的充电管理解决方案.PW4052 采用三段式充电管理 ...

  3. K8s 超详细总结

    一个目标:容器操作:两地三中心:四层服务发现:五种Pod共享资源:六个CNI常用插件:七层负载均衡:八种隔离维度:九个网络模型原则:十类IP地址:百级产品线:千级物理机:万级容器:相如无亿,K8s有亿 ...

  4. 乐观锁思想在JAVA中的实现——CAS

    更多技术干活尽在个人公众号--JAVA旭阳 前言 生活中我们看待一个事物总有不同的态度,比如半瓶水,悲观的人会觉得只有半瓶水了,而乐观的人则会认为还有半瓶水呢.很多技术思想往往源于生活,因此在多个线程 ...

  5. SQL注入漏洞原理与利用

    SQL注入漏洞原理与利用 SQL注入漏洞流程 判断注入类型 判断字段个数 查询回显位 查询数据库名 查询表.字段名 查询内容 判断注入类型 1.数字型注入点判断 当要输入的参数x为数字型时,后端脚本中 ...

  6. 一篇文章教你实战Docker容器数据卷

    在上一篇中,咱们对Docker中的容器数据卷做了介绍.已经知道了容器数据卷是什么?能干什么用.那么本篇咱们就来实战容器数据卷,Docker容器数据卷案例主要做以下三个案例 1:宿主机(也就是Docke ...

  7. 软件开发目录规范、python常用内置模块

    编程思想的转变 1.面条版阶段 所有的代码全部堆叠在一起.可以看成是直接将所有的数据放在C盘        视频.音频.文本.图片 2.函数版阶段 根据功能的不同封装不同的函数.可以看成是将C盘下的数 ...

  8. Python 为什么如此设计?

    大概两年半前,我萌生了要创作一个新的系列文章的想法,也就是"Python为什么",试图对 Python 的语法及特性提出"为什么"式的问题,以此加深对它的理解, ...

  9. vue中单独封装elementui中的Dialog弹框组件

    一.在components文件中新建 弹框组件 <template> <div> <el-dialog title="提示" :visible.syn ...

  10. 有意思,小程序还可以一键生成App!

    小程序≠微信小程序 说到小程序,大部分同学的第一反应,可能是微信小程序.支付宝小程序,确实,小程序的概念深入人心,并且已经被约定俗成的绑定到某些互联网公司的 APP 上. 但是,"小程序&q ...