2015-09-28 1 views
0

Я пытаюсь следовать вместе с учебником OpenCV, найденным here. Часть учебника - создать детектор свойств SURF.OpenCV в C++: «Неизвестное имя типа»

В отличие от учебника, мой код находится в файле заголовка, например:

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); 
.... 

анс, как я понимаю, в этом коде SurfFeatureDetector detector(minHessian); не сигнатура функции, вы можете написать в файле заголовка, как вы делали; но на самом деле он вызывает функцию SurfFeatureDetector в коде.
Итак, я думаю, что если вы удалите его из кода файла заголовка и поместите его в свои функции, где вы хотите называть его, это может сработать.

+0

Как только я переместил его внутри функции, он сработал. – user3025403

 Смежные вопросы

  • Нет связанных вопросов^_^