我想使用detector_descriptor_evaluation.cpp数据集在OpenCV中运行opencv_extra示例。然而,我发现了SIFT,冲浪探测器的错误,我不能使用匹配器。我想知道是否有人有这些问题,我要解释。
主函数创建一个具有不同检测器和/或匹配器类型的DetectorQualityEvaluator类对象,如下所示:
Ptr<BaseQualityEvaluator> evals[] =
{
new DetectorQualityEvaluator( "FAST", "quality-detector-fast" ),
new DetectorQualityEvaluator( "GFTT", "quality-detector-gftt" ),
new DetectorQualityEvaluator( "HARRIS", "quality-detector-harris" ),
new DetectorQualityEvaluator( "MSER", "quality-detector-mser" ),
new DetectorQualityEvaluator( "STAR", "quality-detector-star" ),
new DetectorQualityEvaluator( "SIFT", "quality-detector-sift" ),
new DetectorQualityEvaluator( "SURF", "quality-detector-surf" ),
new DescriptorQualityEvaluator( "SIFT", "quality-descriptor-sift", "BruteForce" ),
new DescriptorQualityEvaluator( "SURF", "quality-descriptor-surf", "BruteForce" ),
new DescriptorQualityEvaluator( "FERN", "quality-descriptor-fern"),
new CalonderDescriptorQualityEvaluator()
};程序工作良好,直到SIFT和冲浪探测器,但它提供了“算法不能读取”错误。换句话说,我不能创建这些探测器。当我不创建SIFT和冲浪探测器
//new DetectorQualityEvaluator( "SIFT", "quality-detector-sift" ),
//new DetectorQualityEvaluator( "SURF", "quality-detector-surf" ),我得到以下错误:
OpenCV Error: Assertion failed (!extractor.empty() && !matcher.empty()) in VectorDescriptorMatcher, file /home/sy/opencv-2.4.8/modules/features2d/src/matchers.cpp, line 1089当我使用以下代码时
//new DetectorQualityEvaluator( "SIFT", "quality-detector-sift" ),
//new DetectorQualityEvaluator( "SURF", "quality-detector-surf" ),
//new DescriptorQualityEvaluator( "SIFT", "quality-descriptor-sift", "BruteForce" ),
//new DescriptorQualityEvaluator( "SURF", "quality-descriptor-surf", "BruteForce" ),
new DescriptorQualityEvaluator( "FERN", "quality-descriptor-fern"),
new CalonderDescriptorQualityEvaluator()我在下面也会犯错误。我想它认不出“弗恩”这个词了。在本例中,只有CalonderDescriptor才能工作。
OpenCV Error: Bad argument (Unknown matcher name) in create, file /home/sy/opencv-2.4.8/modules/features2d/src/matchers.cpp, line 488问候
发布于 2014-02-21 20:57:19
我也遇到了同样的失败。经过一些调试后,我发现对于SIFT和SURF,您将需要非空闲模块,这在示例代码中是缺失的。加:
#include "opencv2/nonfree/nonfree.hpp"然后在main()中插入以下内容:
cv::initModule_nonfree();行前:
Ptr<BaseQualityEvaluator> evals[] =问候
https://stackoverflow.com/questions/21676260
复制相似问题