C++ OpenCV词汇包:断言失败(!\u descriptors.empty())
我正在尝试创建一包单词,以便以后可以训练SVM。我是OpenCV新手,所以我使用了在互联网上找到的代码。问题是我有以下错误:C++ OpenCV词汇包:断言失败(!\u descriptors.empty()),c++,opencv,svm,feature-detection,C++,Opencv,Svm,Feature Detection,我正在尝试创建一包单词,以便以后可以训练SVM。我是OpenCV新手,所以我使用了在互联网上找到的代码。问题是我有以下错误: OpenCV Error: Assertion failed (!_descriptors.empty()) in add, file /build/buildd/opencv-2.4.8+dfsg1/modules/features2d/src/bagofwords.cpp, line 57 terminate called after throwing an inst
OpenCV Error: Assertion failed (!_descriptors.empty()) in add, file /build/buildd/opencv-2.4.8+dfsg1/modules/features2d/src/bagofwords.cpp, line 57
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.4.8+dfsg1/modules/features2d/src/bagofwords.cpp:57: error: (-215) !_descriptors.empty() in function add
Aborted (core dumped)
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <opencv2/opencv.hpp>
#include <fstream>
#include <iostream>
#include <string>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Ptr<FeatureDetector> features = FeatureDetector::create("FAST");
Ptr<DescriptorExtractor> descriptors = DescriptorExtractor::create("FAST");
Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create("FlannBased");
//defining terms for bowkmeans trainer
TermCriteria tc(TermCriteria::MAX_ITER + TermCriteria::EPS, 10, 0.001);
int dictionarySize = 1000;
int retries = 1;
int flags = KMEANS_PP_CENTERS;
BOWKMeansTrainer bow_trainer(dictionarySize, tc, retries, flags);
BOWImgDescriptorExtractor bowDE(descriptors, matcher);
//training data now
Mat mat_features1, mat_features2;
Mat img = imread("../positive_images/2014-12-07 19-55-07 804ea51d (1).JPG", 0);
Mat img2 = imread("../positive_images/Pictures23.bmp_0000_0342_0104_0564_0543.png", 0);
vector<KeyPoint> keypoints, keypoints2;
features->detect(img, keypoints);
features->detect(img2,keypoints2);
descriptors->compute(img, keypoints, mat_features1);
descriptors->compute(img2, keypoints2, mat_features2);
bow_trainer.add(mat_features1);
bow_trainer.add(mat_features2);
Mat dictionary = bow_trainer.cluster();
bowDE.setVocabulary(dictionary);
return 0;
}
你知道可能是什么问题吗?你能告诉我怎么修吗?
如果您需要我提供更多信息,请告诉我 在文件路径中使用\\而不是/同样,请将文件命名为pictures.png或其他一些简单的名称。我在UBUNTUALS下工作,因此我认为问题不在于名称。FAST只是一个检测器,您不能将其用作描述符。
g++ BOW_creator.cpp -o BOW_creator `pkg-config --cflags --libs opencv`