C++ OpenCV SURF vs SurfFeatureDetector vs SurfDescriptorExtr
C++ OpenCV SURF vs SurfFeatureDetector vs SurfDescriptorExtractor
到目前为止,我使用cv::SurfFeatureDetector
从图像中获取SURF点。现在我想要得到描述符。所以,我认为cv::SurfDescriptorExtractor
是我需要的。但是,我看到cv::SurfFeatureDetector
和SurfDescriptorExtractor
都可以检测SURF点并计算描述符。还有cv::SURF
可以做同样的事情。这三个有什么不同吗?
不,没有区别。
你可以在源代码中看到它们是相同的:
typedef SURF SurfFeatureDetector;
typedef SURF SurfDescriptorExtractor;
在实践中,XXXFeatureDetector
和XXXDescriptorExtractor
只是两个独立任务的公共接口,因此您可以将关键点检测从描述符计算中分离出来,例如您可以使用MSER检测关键点并使用SIFT计算描述符。
你可以在这里看到SURF inherits from
Feature2D ':
class CV_EXPORTS_W SURF : public Feature2D
FeatureDetector
和DescriptorExtractor
与Feature2D
相同:
typedef Feature2D FeatureDetector;
typedef Feature2D DescriptorExtractor;
FeatureDetector和DescriptorExtractor的区别是:
常见问题是提取OpenCV中的特征检测器具有具有公共接口的包装器,使您能够轻松地在解决相同问题的不同算法之间切换。所有实现关键点检测器的对象都继承了FeatureDetector接口。
KeyPoint
s。
OpenCV中关键点描述符的提取器具有具有公共接口的包装器,使您能够轻松地在解决相同问题的不同算法之间切换。本节致力于计算在多维空间中表示为向量的描述符。所有实现向量描述符提取器的对象都继承了DescriptorExtractor接口。
这种区别有助于将查找关键点的任务与计算描述符的任务分开,因为并非所有方法都能同时完成这两项任务。例如,MSER只是一个特征检测器,但不计算描述符。
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 完美前进使用 std::forward vs RefRefCast
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- consteval wrapper vs. source_location
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- VS 2017 使用交叉编译器构建 x64 项目