1 KeyPoint类
参考博文
https://blog.csdn.net/u010821666/article/details/52883580
官网链接
https://docs.opencv.org/2.4.9/modules/features2d/doc/common_interfaces_of_feature_detectors.html#keypoint
1.1 内部变量
pt(x,y)
:关键点的点坐标;
size()
:该关键点邻域直径大小;
angle
:角度,表示关键点的方向,取值范围[0,360),负值表示不使用。
octave
:代表是从金字塔哪一层提取的得到的数据
class_id
:当要对图片进行分类时,我们可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设定
response
:响应程度,代表该点强壮大小(该关键点的牛逼程度)
注意:
(1)keypoint只是保存了opencv的sift库检测到的特征点的一些基本信息,但sift所提取出来的特征向量其实不是在这个里面,特征向量通过SiftDescriptorExtractor 提取,结果放在一个Mat的数据结构中
原文链接:
https://www.cnblogs.com/cj695/p/4041399.html
2 DMatch类
参考博文:
http://www.mamicode.com/info-detail-2159374.html
int queryIdx
:是测试图像的特征点描述符(descriptor)的下标,同时也是描述符对应特征点(keypoint)的下标。
int trainIdx
:是样本图像的特征点描述符的下标,同样也是相应的特征点的下标。
int imgIdx
:当样本是多张图像的话有用。
float distance
:代表这一对匹配的特征点描述符(本质是向量)的欧氏距离,数值越小也就说明两个特征点越相像。
bool operator<(const DMatch &m) const
; 一个小于操作符的重载,用于比较和排序。 比较的是上述的distance,当然是越小越好。