关于OpenCV中有关存储特征点、描述子、匹配点对的vector和Mat的成员函数详解

对于使用OpenCV提取图像特征点的方法,全部分为五部分,第一步:创建特征检测算子,如ORB,SURF,SIFT等;第二步:创建vector keyPoints1, keyPoints2来存储detect到的特征点;第三步:创建Mat descriptors1, descriptors2来存储compute到的描述子;第四步:创建vector matches来存储match到的匹配点对;第五步:限制描述子之间的距离,选择距离较小的匹配点对。

说明:
1.关于vector keyPoints1, keyPoints2,可以理解其为两个具有500行(默认检测500个特征点)的结构体,结构体中包含有的成员有pt、size、angle、response、octave和class_id。使用下列方法进行访问:keyPoints1[0–499].pt,表示特征点的坐标,还有keyPoints1[0–499].pt.x和keyPoints1[0–499].pt.y来分别表示横纵坐标;keyPoints1[0–499].size用来返回特征点的大小;keyPoints1[0–499].angle返回特征点的角度;keyPoints1[0–499].response返回各特征点的响应值;keyPoints1[0–499].octave返回该点位于哪一层金字塔;最后的keyPoints1[0–499].class_id返回特征点的标签。
2.关于Mat descriptors1, descriptors2,这两个矩阵用来存储两个500行32列(ORB特征)的描述子,即每行代表一个特征点的描述子。
3.关于vector match,理解与keyPoints1一样。其中:match.size()返回match的行数;match[0–499].queryIdx返回当前“匹配点”在查询图像的特征在KeyPoints1向量中的索引号,可以据此找到匹配点在查询图像中的位置;match[0–499].trainIdx返回当前“匹配点”在训练(模板)图像的特征在KeyPoints2向量中的索引号,可以据此找到匹配点在训练图像中的位置;match[0–499].imgIdx返回当前匹配点对应训练图像(如果有若干个)的索引,如果只有一个训练图像跟查询图像配对,即两两配对,则imgIdx=0;match[0-499].distance返回特征点之间的欧氏距离,越小表明匹配度越高。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值