OpenCV: почему детекторы SIFT и SURF дают сбой?

Почему детекторы SIFT и SURF дают сбой?

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
Mat image = imread("TestImage.jpg");

// Create smart pointer for SIFT feature detector.
Ptr<FeatureDetector> featureDetector = FeatureDetector::create("SIFT");
vector<KeyPoint> keypoints;

// Detect the keypoints
featureDetector->detect(image, keypoints); // here crash
// ...
}

Ошибка Segmentation fault (core dumped), Я использую OpenCV 2.4.8, gcc 4.9 и Ubuntu. Если я использую другие типы функций, он работает нормально. Что мне не хватает?

2

Решение

Вы пытались позвонить initModule_nonfree()?

#include <opencv2/nonfree/nonfree.hpp>
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
initModule_nonfree();
Mat image = imread("TestImage.jpg");

// Create smart pointer for SIFT feature detector.
Ptr<FeatureDetector> featureDetector = FeatureDetector::create("SIFT");
vector<KeyPoint> keypoints;

// Detect the keypoints
featureDetector->detect(image, keypoints); // here crash
// ...
}

Кроме того, вы не проверяли указатель featureDetector, который, вероятно, равен нулю (поскольку вы не вызывали initModule).

10

Другие решения


По вопросам рекламы [email protected]