OpenCV中特征检测,提取与匹配使用方法学习

本文介绍了在OpenCV中进行特征检测、提取和匹配的学习过程,包括ORB、BRISK等检测器和BriefDescriptorExtractor等描述符。通过实际代码示例,展示了如何高效利用OpenCV提供的工具,避免重复劳动,以及应用到光流算法。

        最近在学习OpenCV,一般看官方一边看书,发现自己原来用的很多接口早已被更新,分享一下学习心得体会,也希望大家可以不吝赐教!
        首先看到在Mastering OpenCV with Practical Computer Vision Projects书中,特征点检测,特征点描述(特征提取),特征点匹配用了以下代码:

cv::Ptr<cv::FeatureDetector> detector = new cv::ORB(1000);			// 创建orb特征点检测
cv::Ptr<cv::DescriptorExtractor> extractor = new cv::FREAK(true, true);		// 用Freak特征来描述特征点
cv::Ptr<cv::DescriptorMatcher> matcher = new cv::BFMatcher(cv::NORM_HAMMING,	// 特征匹配,计算Hamming距离
看到这段代码的时候很疑惑,为什么可以这么写呢?跟到feature2D.hpp中看了看,发现:

class CV_EXPORTS_W ORB : public Feature2D

class CV_EXPORTS_W Feature2D : public FeatureDetector, public DescriptorExtractor

        原来ORB,Feature2D,FeatureDetecter以及DescriptorExtractor之间是这样的继承关系,所以我们可以new一个ORB对象给FeatureDetecter指针了。再搜索一下文档和头文件,还有更多的检测方法,特征描述可以使用。其中ORB既可以作为检测器,也可以作特征提取。
        可以作为检测器的还有BRISK,MSER(特征区域),FastFeatureDetector(应该就是Orb吧?),StarDetector等等。
        可以作特征提取的描述器包括BriefDescriptorExtractor(应该就是Orb吧?)Freak,OpponentColorDescriptorExtractor等等。
        原来OpenCV提供了好多现成的方法,好方便……感叹一下,以前辛辛苦苦码的代码很多就浪费了,用好工具还是很重要那!>_< 顺带一提的是,2.4.5中新增的CLAHE二值化方法也是类似的调用方法:

cv::Ptr<cv::CLAHE> cl = createCLAHE(80, Size(4, 4))
cl->apply(imSrc, ImDst);
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值