编辑:我之前看错了OpenCV2的代码示例,OpenCV3中没有
FeatureDetector::create
,这让我感到困惑。
嘿,我是OpenCV的新手,通过分析其他人的C++代码学习示例。
我想尝试所有可用选项:
detector = FeatureDetector::create(str_detector);
descriptor = DescriptorExtractor::create(str_descriptor);
目前str_detector是FAST
,str_descriptor是BRISK
我在寻找可用的检测器和描述符时遇到了麻烦。
有没有办法输出当前所有可用选项的列表?
(我刚刚在新的Linux安装上从GitHub构建了最新的opencv + opencv-contrib)
我在这里找到了一个第三方文件列表https://github.com/Itseez/opencv_contrib/tree/master/modules/xfeatures2d/src - 我认为这些是第三个描述符和检测器,因为这些单词在一些文件中被提到。但是,拥有一个当前编译/可用选项的完整列表会很好。
谢谢!
我正在尝试自己找到答案,边编辑边进行:
- 在
modules/features2d/include/opencv2/features2d.hpp
中找到了typedef Feature2D FeatureDetector
和typedef Feature2D DescriptorExtractor
。 - 现在正在查找
Feature2D
... - 我很困惑,我的C++让我失望了,https://github.com/Itseez/opencv/blob/master/modules/features2d/src/feature2d.cpp中没有
create
。 - 现在只需查看代码(https://github.com/Itseez/opencv/blob/master/modules/features2d/include/opencv2/features2d.hpp)
- BRISK
- ORB
- MSER
- FastFeatureDetector / FAST
- AgastFeatureDetector / AGAST
- GFTTDetector
- SimpleBlobDetector
- KAZE / AKAZE
- 还有来自contrib代码的(https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp)
- FREAK
- StarDetector
- BriefDescriptorExtractor
- LUCID
- LATCH
- DAISY
- MSDDetector
- 还有来自非免费contrib代码的(https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp)
- SIFT
- SURF
- 仍然不确定上述哪些可以/应该用于FeatureDetector或DescriptorExtractor。
#if CV_MAJOR_VERSION > 2
,它使用了更新的detector = cv::FastFeatureDetector::create();
而不是旧的detector = FeatureDetector::create(str_detector);
。这更加合理,并且与文档/源代码相匹配。干杯! - dtbaker