首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv示例不起作用(detectors_descriptors_evaluation.cpp)

opencv示例不起作用(detectors_descriptors_evaluation.cpp)
EN

Stack Overflow用户
提问于 2014-02-10 11:43:27
回答 1查看 759关注 0票数 0

我想使用detector_descriptor_evaluation.cpp数据集在OpenCV中运行opencv_extra示例。然而,我发现了SIFT,冲浪探测器的错误,我不能使用匹配器。我想知道是否有人有这些问题,我要解释。

主函数创建一个具有不同检测器和/或匹配器类型的DetectorQualityEvaluator类对象,如下所示:

代码语言:javascript
复制
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和冲浪探测器

代码语言:javascript
复制
    //new DetectorQualityEvaluator( "SIFT", "quality-detector-sift" ),
    //new DetectorQualityEvaluator( "SURF", "quality-detector-surf" ),

我得到以下错误:

代码语言:javascript
复制
   OpenCV Error: Assertion failed (!extractor.empty() && !matcher.empty()) in VectorDescriptorMatcher, file /home/sy/opencv-2.4.8/modules/features2d/src/matchers.cpp, line 1089

当我使用以下代码时

代码语言:javascript
复制
    //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才能工作。

代码语言:javascript
复制
  OpenCV Error: Bad argument (Unknown matcher name) in create, file /home/sy/opencv-2.4.8/modules/features2d/src/matchers.cpp, line 488

问候

EN

回答 1

Stack Overflow用户

发布于 2014-02-21 20:57:19

我也遇到了同样的失败。经过一些调试后,我发现对于SIFT和SURF,您将需要非空闲模块,这在示例代码中是缺失的。加:

代码语言:javascript
复制
#include "opencv2/nonfree/nonfree.hpp"

然后在main()中插入以下内容:

代码语言:javascript
复制
cv::initModule_nonfree();

行前:

代码语言:javascript
复制
Ptr<BaseQualityEvaluator> evals[] =

问候

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21676260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档