OpenCV 3.1.0中特征检测与描述算法接口改动
OpenCV从 2.4.x升级到3.x中有很多代码重构和性能提高,还有API接口的整合,以Feature2D及其扩展模块的特征检测与描述为例,在OpenCV2.4.x中可以通过FeatureDetector::create("特征名称");方法创建一个检测器,2.4.x中支持的检测类型如下。
把特征名称换成上面列表中任意一个,从而实现对图像特征检测。但是到了OpenCV3.1.0中如果你还是这么用,VS预编译就会报告说FeatureDetector::create()方法不存在,原因是OpenCV在最新的3.1.0版本中已经去掉了该方法,对所有特征提取的方法进行了重新梳理并且出现了几种新的特征检测与描述方法。现总结如下(不敢保证没有遗漏,但是已经够多了)
- BRISK: detector + descriptor
- ORB: detector + descriptor
- MSER: detector
- FAST: detector
- AGAST: detector
- GFFT: detector
- SimpleBlobDetector: detector
- KAZE: detector + descriptor
- AKAZE: detector + descriptor
- FREAK: descriptor
- StarDetector: detector
- BriefDescriptorExtractor: descriptor
- LUCID: descriptor
- LATCH: descriptor
- DAISY: descriptor
- MSDDetector: detector
- SIFT: detector + descriptor
- SURF: detector + descriptor
对上述列表说明如下:
detector
表示该特征可以作为检测器生成KeyPoint数组vector对象
descriptor
表示该特征可以从KeyPoint结果得到描述子Mat对象
detector+descriptor
表示该特征二者皆可
那么问题来了使用OpenCV 3.1.0的版本如何调用这些API接口实现图像特征点检测与描述子生成。以ORB为例特征检测生成关键点的代码如下:
由此可以,在OpenCV 3.1.0中各种特征检测与描述方法明显更多,给大家选择的余地更大,其中一些方法都是近几年的新发研究论文实现。
关注【OpenCV学堂】
长按或者扫码下面二维码即可关注
+OpenCV学习群 376281510
进群暗号:OpenCV