2015-05-17 5 views
0

У меня есть следующий кодобнаружения Функции с OpenCV терпит неудачу с виной SEG

cv::initModule_nonfree(); 
std::vector<cv::KeyPoint> keypoints_1; 
cv::Ptr<cv::FeatureDetector> detector = cv::FeatureDetector::create("SURF"); 
cv::Mat image = cv::imread("someFileNameHere",cv::IMREAD_COLOR); 
// image.data is true, cv::imshow() dispalys the image 
detector->detect(image, keypoints_1); // seg fault here 

Что может быть причиной неисправности SEG? Я попытался запустить GDB на него с надеждой, что библиотека имеет достаточно мета-данные, но стек заканчивается на вызове detect()

+0

Это не 'imread'? Вы указываете имя файла в своем коде? Я думаю, что openCV терпит неудачу, если вы не укажете имя файла для imread. Другая причина может заключаться в том, что вам нужно 'cv :: detect' вместо' detect'. – mprat

+0

@mprat Sry, я не был явным, есть имя файла, я думал, что это true.data изображения будет означать, что ... –

+0

проверить, если ваш детектор действителен: 'detector.empty()' (да , с точкой, а не указателем) – berak

ответ

0

сорта :: Mat изображение пустое изображение при вызове извещателя> обнаружить.

Когда вы вызываете cv :: imread, вы должны установить первый параметр в непустую строку.

+0

Sry, я не был явным, есть имя файла, я думал, что это true.data true будет означать, что ... –

+0

ha, извините, я был небрежен и пропустил комментарии. Я думаю, может быть, ошибка seg была вызвана несоответствием версии времени выполнения. Я предлагаю перестроить opencv из src с помощью собственного gcc toolchain. –