繁体   English   中英

OpenCV MWE中的分段错误

[英]Segmentation fault in OpenCV MWE

我想获得一个OpenCV的FABMAP实现的最小工作示例。 为了到达那里,我从该文件复制了代码。 我使用与示例代码提供程序不同的OpenCV版本(在我的情况下为2.4.8),并且不得不更改原始行

Ptr<DescriptorExtractor> extractor =
    new SurfDescriptorExtractor(1000, 4, 2, false, true);

Ptr<DescriptorExtractor> extractor =
    DescriptorExtractor::create("SURF");

不幸的是,现在我遇到了无法解决的细分错误(我评论了这一行)。 此外,我发现extractor是空指针,而matcher不是。 可能是nullpointer extractor程序引起了麻烦吗? 我该如何解决这种情况?

我正在使用Ubuntu 14.04和g ++进行编译(c ++ 11)。

要重现此内容,您必须下载此目录 我的最小(几乎)工作示例:

#include "opencv2/opencv.hpp"
#include "opencv2/features2d/features2d.hpp"

using namespace cv;
using namespace std;

int main(int argc, char * argv[]) {

    string dataDir = "fabmap_data/";

    FileStorage fs;

    //load/generate vocabulary
    fs.open(dataDir + string("vocab_small.yml"), FileStorage::READ);
    Mat vocab;
    fs["Vocabulary"] >> vocab;
    fs.release();

    //generate test data
    Ptr<FeatureDetector> detector =
        new DynamicAdaptedFeatureDetector(
        AdjusterAdapter::create("STAR"), 130, 150, 5);
    Ptr<DescriptorExtractor> extractor =
        DescriptorExtractor::create("SURF"); // extractor seems to be a nullpointer (addres:: 0x0)
    Ptr<DescriptorMatcher> matcher =
        DescriptorMatcher::create("FlannBased");

    BOWImgDescriptorExtractor bide(extractor, matcher);
    bide.setVocabulary(vocab);

    string imageName = "stlucia_test_small0000.jpeg";

    Mat frame;
    Mat bow;
    vector<KeyPoint> kpts;

    frame = imread(dataDir + imageName);
    detector->detect(frame, kpts);
    bide.compute(frame, kpts, bow); // I get a segmentation fault at this line!

    return 0;
}

这是一个错误,会影响2.4.4至2.4.9的版本: http : //code.opencv.org/issues/2280

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM