OpenCV之特征检测器(Feature Detector),描述子提取器(Descriptor Extractor)和描述子匹配器(Descriptor Matcher)

1.特征检测子

-Harris

cv::cornerHarris(image,strength,3,3,0.01);

-Fast

cv::Ptr<cv::FastFeatureDetector> fast = cv::FastFeatureDetector::create();
//或
cv::FAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold)
//或
cv::FAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold, bool nonmaxSuppression, int type)

-SIFT

cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();
//或
<pre name="code" class="cpp">cv::Ptr<cv::xfeatures2d::SiftFeatureDetector> sift = cv::xfeatures2d::SiftFeatureDetector::create();

-SURF

cv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();
//或
cv::Ptr<cv::xfeatures2d::SurfFeatureDetector> surf = cv::xfeatures2d::SurfFeatureDetector::create();

-ORB

cv::Ptr<cv::ORB> orb = cv::ORB::create();

-MSER

cv::Ptr<cv::MSER> mser = cv::MSER::create();

-GFTT

cv::Ptr<cv::GFTTDetector> gftt = cv::GFTTDetector::create();

或者直接用goodFeaturesToTrack function;

-AGAST

cv::AGAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold)
//或
cv::AGAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold, bool nonmaxSuppression, int type)
//或
cv::Ptr<cv::AgastFeatureDetector> agast = cv::AgastFeatureDetector::create();

-BRISK

cv::Ptr<cv::BRISK> brisk = cv::BRISK::create();

-SimpleBlob

cv::Ptr<cv::SimpleBlobDetector> blob = cv::SimpleBlobDetector::create();

-KAZE

cv::Ptr<cv::KAZE> kaze = cv::KAZE::create();

-AKAZE

cv::Ptr<cv::AKAZE> akaze = cv::AKAZE::create();

2.描述子提取器

-SIFT

<span style="font-weight: normal;"><span style="font-size:12px;">cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();
//或
cv::Ptr<cv::xfeatures2d::SiftDescriptorExtractor> sift = cv::xfeatures2d::SiftDescriptorExtractor::create();</span></span>

-SURF

<span style="font-weight: normal;"><span style="font-size:12px;">cv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();
//或
cv::Ptr<cv::xfeatures2d::SurfDescriptorExtractor> surf = cv::xfeatures2d::SurfDescriptorExtractor::create();</span></span>

-BRIEF

Opencv中没有单独将BRIEF用来提取描述子,因为它是被用于ORB中的;

-BRISK

<span style="font-weight: normal;"><span style="font-size:12px;">cv::Ptr<cv::BRISK> brisk = cv::BRISK::create();</span></span>

-ORB

<span style="font-size:12px;font-weight: normal;">cv::Ptr<cv::ORB> orb = cv::ORB::create();</span>

ORB是用fast特征;

-KAZE

<span style="font-size:12px;font-weight: normal;">cv::Ptr<cv::KAZE> kaze = cv::KAZE::create();</span>

注:KAZE描述子只能使用KAZE或AKAZE特征点;

-AKAZE

<span style="font-size:12px;font-weight: normal;">cv::Ptr<cv::AKAZE> akaze = cv::AKAZE::create();</span>

同样,AKAZE描述子也只能使用KAZE或AKAZE特征点;

3.描述子匹配器

-BruteForce-BFMatcher

cv::Ptr<cv::BFMatcher> bf = cv::BFMatcher::create("BruteForce");

其中,匹配类型还可以是“BruteForce-L1”,“BruteForce-L2”,“BruteForce-Hamming”;

-FlannBased-FlannBasedMatcher

cv::Ptr<cv::FlannBasedMatcher> flann = cv::FlannBasedMatcher::create("FlannBased");
时间: 2024-10-20 14:02:06

OpenCV之特征检测器(Feature Detector),描述子提取器(Descriptor Extractor)和描述子匹配器(Descriptor Matcher)的相关文章

【OpenCV】特征检测器 FeatureDetector

<SIFT原理与源码分析>系列文章索引:http://www.cnblogs.com/tianyalu/p/5467813.html OpenCV提供FeatureDetector实现特征检测及匹配 class CV_EXPORTS FeatureDetector { public: virtual ~FeatureDetector(); void detect( const Mat& image, vector<KeyPoint>& keypoints, cons

【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 &amp; 纹理混合

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/41175585 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] 本文介绍了Unity中子着色器.通道和标签相关的详细概念与写法,以及纹理的设置方法,基本的纹理混合写法,写了5个Shader作为本文Shader讲解的实战内容,最后创建了一个梦幻的光之

Unity3d之Shader编程:子着色器、通道与标签的写法 &amp; 纹理混合

一.子着色器 Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器. 我们知道,子着色器定义了一个渲染通道的列表,并可选是否为所有通道初始化所需要的通用状态.子着色器的写法如下: Subshader{ [Tags] [CommonState] Passdef [Passdef ...] } 也就是通过可选标签,通用状态 和 一个Pass 定义的列表构成了子着色器. 当Unity选择用于

OpenCV中特征点提取和匹配的通用方法

OpenCV在新版本中把很多C语言的代码都重新整理成了C++代码,让我们在使用的时候更加方便灵活.其中对于特征点的提取和匹配,充分体现了C++的强大.下面直接用例子来说明.假设我们有两幅图:1.bmp和2.bmp,要从中提取体征点并匹配,代码如下: // Load image from file IplImage *pLeftImage = cvLoadImage("1.bmp", CV_LOAD_IMAGE_GRAYSCALE);IplImage *pRightImage = cvL

OpenCV2.4.4中调用SIFT特征检测器进行图像匹配

OpenCV中一些相关结构说明: 特征点类: class KeyPoint { Point2f pt; //坐标 float size; //特征点邻域直径 float angle; //特征点的方向,值为[0,360),负值表示不使用 float response; // int octave; //特征点所在的图像金字塔的组 int class_id; //用于聚类的id } 存放匹配结果的结构: 1 struct DMatch 2 { 3 //三个构造函数 4 DMatch(): quer

(一)ORB描述子提取

ORBSLAM2中使用ORB描述子的方法 经典的视觉SLAM系统大体分为两种:其一是基于特征点法的,其二是基于直接法的.那么本文主要就讲特征点法的SLAM. 基于特征点法的视觉SLAM系统典型的有PTAM,ORBSLAM等.本文主要围绕ORBSLAM2的方案来阐述特征点法SLAM,因为ORBSLAM2可以说是特征点法SLAM的巅峰之作.ORBSLAM2采用三个主要线程:跟踪,局部建图和闭环以及一个额外线程:全局BA,该线程只有在闭环时才会触发.值得注意的是,ORBSLAM2中每个模块中都采用OR

OpenCV Error: The function/feature is not implemented (OpenCV was built without SURF support) in cvE

OpenCV Error: The function/feature is not implemented (OpenCV was built without SURF support) in cvExtractSURF, file /tmp/buildd/ros-hydro-opencv2-2.4.9-2precise-20141231-1914/modules/legacy/src/features2d.cpp, line 77 terminate called after throwing

AI学习---特征工程(Feature Engineering)

为什么需要特征工程(Feature Engineering) 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已 什么是特征工程 帮助我们使得算法性能更好发挥性能而已 sklearn主要用于特征工程pandas主要用于数据清洗.数据处理 特征工程包含如下3个内容: 1.特征抽取/特征提取 |__>字典特征抽取 |__>文本特征抽取 |__>图像特征抽取(深度学习) 2.特征预处理 3.特征降维 特征抽取/特征提取 我们常说的机器学习算法实际上就是我们统计学上的统计方法也就是

父级是relative,子级为absolute的情况下,子级宽度自适应

经常见到这种排版,父级的css 有relative,而子级的css含有absolute,这样,子级宽度自适应的话是不会超过父级的宽度. 解决办法有两种: 1.给子级设置宽度. 2.给子级设置css属性 white-space: nowrap;