2015-05-17 87 views
0

我有以下代碼特徵檢測與OpenCV的失敗,賽格故障

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 

什麼可以賽格故障的原因是什麼?我試圖與希望圖書館有足夠的元數據,在其上運行gdb的,但堆棧在通話結束後,以detect()

+0

這不是'imread'?你的代碼中包含一個文件名?我認爲,如果你沒有提供imread的文件名,openCV就會失敗。另一個原因可能是你需要'cv :: detect'而不是'detect'。 – mprat

+0

@mprat Sry基因,我是不明確的,有一個文件名,我還以爲說的是image.data是真的將意味着...... –

+0

檢查,如果你的檢測是有效的:'detector.empty()'(是的,用一個點,而不是指針) – berak

回答

0

CV ::墊圖像是一個空的圖像,當你調用detector->檢測。

當你調用CV :: imread,你必須第一放慢參數設置爲一個非空字符串。

+0

Sry基因,我是不明確的,有一個文件名,我還以爲說的是image.data是真的會暗示... –

+0

哈,對不起,我粗心大意,錯過了評論。我想也許seg故障是由一些運行時版本不匹配造成的。我建議用你自己的gcc工具鏈從src重建opencv。 –