2015-09-28 111 views
0

我想跟着OpenCV教程,發現here。本教程的一部分是創建SURF特徵檢測器。C++中的OpenCV:「未知類型名稱」

不同於本教程中,我的代碼是在頭文件中,就像這樣:

class Img { 
    Mat mat; 
    int minHessian = 400; 
    SurfFeatureDetector detector(minHessian); 

    public: 
     ... 
} 

我得到的錯誤就行了

SurfFeatureDetector detector(minHessian); 

和錯誤發生的是:

Unknown type name 'minHessian' 

當我不把它放在一個單獨的類中時,編譯器不會抱怨。我也檢查過並導入了所需的庫。

有人可以告訴我錯誤是什麼,以及如何解決它?

回答

1

我讀了OpenCV的教程代碼:

Mat img1 = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE); 
Mat img2 = imread(argv[2], CV_LOAD_IMAGE_GRAYSCALE); 
if(img1.empty() || img2.empty()) 
{ 
    printf("Can't read one of the images\n"); 
    return -1; 
} 

// detecting keypoints 
SurfFeatureDetector detector(400); 
vector<KeyPoint> keypoints1, keypoints2; 
detector.detect(img1, keypoints1); 
detector.detect(img2, keypoints2); 
.... 

ANS據我瞭解,在這段代碼中,SurfFeatureDetector detector(minHessian);是不是,你可以在你做你的頭文件寫一個函數的簽名;但實際上它調用了代碼中的SurfFeatureDetector函數。
所以,我想如果你從你的頭文件代碼中刪除它,並把它放到你想調用它的函數中,它可能會起作用。

+0

一旦我將它移入函數中,它就起作用了。 – user3025403