[英]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.