2015-08-23 3 views
0

Я пытаюсь реализовать Digi программу распознавания с C++ и opencv3, когда я определить varible с помощью KNearest я получаю эту ошибку:opencv3 knearest определение объекта ошибки

main.cpp:19:18: error: variable or field 'RunSelfTest' declared void 
void RunSelfTest(KNearest& knn2); 
       ^
main.cpp:19:18: error: 'KNearest' was not declared in this scope 
main.cpp:19:18: note: suggested alternative: 
In file included from c:/OpenCV/build/include/opencv2/ml/ml.hpp:48:0, 
       from main.cpp:1: 
c:/OpenCV/build/include/opencv2/ml.hpp:397:20: note: 'cv::ml::KNearest' 
class CV_EXPORTS_W KNearest : public StatModel 

Это мой код:

#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/ml/ml.hpp" 
#include <iostream> 
#include <stdio.h> 

using namespace cv; 
using namespace std; 

void RunSelfTest(KNearest& knn2); 
void AnalyseImage(KNearest knearest); 

я совершенно не могу найти, где проблема

ответ

0

вы хотите использовать cv::ml::KNearest но вы пытаетесь обратиться к нему, как KNearest в то время как using namespace cv.

Но KNearest также находится внутри ml пространства имен внутри cv::. Попробуйте это:

ml::KNearest 

(или удалить using namespace …; из вашего кода, так как это bad practice так или иначе, и просто относятся к нему как cv::ml::KNearest.)

+0

он работал на первой функции, но теперь я получить не могу объявить параметр «knearest 'быть абстрактным типом' cv :: ml :: KNearest 'для второй функции – Vanojx1

+0

'KNearest' - абстрактный класс, поэтому он не может быть создан и, следовательно, не может быть передан по значению. Вы должны передать его по ссылке. – emlai

+0

oh ok ... извините, но я новичок в C++ и opencv .... кажется, мне так сложно заставить работать самый старый модуль opencv – Vanojx1