2012-10-31 74 views
0

以下代碼僅用於查看SIFT中的特徵檢測。問題在於,當我運行它時,它會中斷。SIFT特徵檢測器產生未處理的異常

#include <features2d.hpp> 
#include <stdafx.h> 
#include <stdlib.h> 
#include <cv.hpp> 
#include <cxcore.hpp> 
#include <highgui.h> 
#include <iostream> 


using namespace cv; 
using namespace std; 


int _tmain(int argc, _TCHAR* argv[]) 
{ 
    Mat img = imread("c:\\chappal.jpg", 0); 
    Ptr<FeatureDetector> feature_detector = FeatureDetector::create("SIFT"); 
    vector<KeyPoint> keypoints; 

    feature_detector->detect(img, keypoints); 

    Mat output; 

    drawKeypoints(img, keypoints, output, Scalar(255, 0, 0)); 

    namedWindow("meh", CV_WINDOW_AUTOSIZE); 
    imshow("meh", output); 
    waitKey(0); 



    return 0; 
} 

當調試一步一步的在這條線的程序中斷:feature_detector->detect(img, keypoints);

我都檢查一遍,再和不知道是什麼問題所致。

P.S.我第一次嘗試SiftFeatureDetector代替FeatureDetector::create("SIFT");,但得到錯誤,因爲它在庫文件中找不到SiftFeatureDetector。我在這個論壇上了解到來自帖子的兩個代碼示例。

謝謝

+0

我發現''SiftFeatureDetector''現在保存在非空閒文件夾中的獨立庫中。如果是這樣,爲什麼在這個2.4教程中沒有使用非自由庫:http://docs.opencv.org/doc/tutorials/features2d/feature_detection/feature_detection.html? – StuckInPhD

回答

1

我不知道你是否嘗試過這一點,但因爲它現在是在nonfree.h庫,你需要使用initModule_nonfree()。這解決了我的問題。