2013-12-17 4 views
0

Я использую версию 2.4.7 версии opencv, которая поддерживает распознавание лиц. Однако я получаю следующее сообщение об ошибке:faceRecognizer не был объявлен в этой области

/home/fereres/recognition-build-desktop- Qt_4_8_1_in_PATH__System__Release/../recognition/program.cpp:58: error: 'FaceRecognizer' was not declared in this scope 

EDIT: Программа работает, так как я просто изменить компьютер. Я выполнил те же инструкции для установки OpenCV. Что может быть причиной этой ошибки? Мой файл QT pro:

 QT  += core 
     QT  -= gui 

     TARGET = identification 
     CONFIG += console/home/fereres/projectCV-build-desktop-  Qt_4_8_1_in_PATH__System__Release 
     CONFIG -= app_bundle 

     TEMPLATE = app 

     INCLUDEPATH += /home/fereres/Desktop/OpenCV/opencv-2.4.7/include/opencv \ 
     INCLUDEPATH += /home/fereres/Desktop/OpenCV/opencv-2.4.7/include/opencv2 \ 
     INCLUDEPATH += /home/fereres/Desktop/OpenCV/opencv-2.4.7/modules/core/include/opencv2/core 

     LIBS += -L/home/fereres/Desktop/OpenCV/opencv-2.4.7/build/lib \ 
     -lopencv_core \ 
     -lopencv_imgproc \ 
     -lopencv_highgui \ 
     -lopencv_ml \ 
     -lopencv_video \ 
     -lopencv_features2d \ 
     -lopencv_calib3d \ 
     -lopencv_objdetect \ 
     -lopencv_contrib \ 
     -lopencv_legacy \ 
     -lopencv_flann 

     SOURCES += \ 
      program.cpp \ 
      prediction.cpp \ 
      Detection.cpp 

     HEADERS += \ 
      prediction.h \ 
      Detection.h 

Сборник выходит без ошибок. Однако, когда я бегу мое приложение я получил

./identification: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory 
    [email protected]:~/identification-build-desktop-Qt_4_8_1_in_PATH__System__Release$ 

Параметр/USR/местные/Библиотека forlder включает только папку питона я не мог найти мой LIBS там.

EDIT2: Я снова установил opencv, и теперь все работает нормально. Я думаю, что последний шаг установки opencv не работал, поэтому моя/usr/local папка была пуста. Теперь все под контролем.

+0

Где код 'признание/program.cpp' строка 58 в? – karlphillip

+0

Моя строка 58: модель Ptr ; –

+0

Трудно помочь, когда вы даете важную информацию в гомеопатических дозах. Вы не забыли написать 'using namespace cv;'? – karlphillip

ответ

2

Это, вероятно, лучше для вас, чтобы настроить INCLUDEPATH инициализацию к следующему, еще каждый #include о том, что относится к opencv2 в начале пути, вызовет ошибку компиляции:

INCLUDEPATH += "/home/fereres/Desktop/OpenCV/opencv-2.4.7/include" \ 
       "/home/fereres/Desktop/OpenCV/opencv-2.4.7/include/opencv" \ 
       "/home/fereres/Desktop/OpenCV/opencv-2.4.7/include/opencv2" \ 
       "/home/fereres/Desktop/OpenCV/opencv-2.4.7/modules/core/include/opencv2/core" 

Затем, в recognition/program.cpp не забудьте включить соответствующий заголовочный файл:

#include <opencv2/contrib/contrib.hpp> 

Примечание : поскольку вы используете pkg-config, чтобы добавить все библиотеки OpenCV, вам не нужно будет этого делать, но для тех людей, которые конкретно определяют библиотеки, вам нужно добавить opencv_contrib в LIBS.

+0

Поскольку вы включаете точный путь contrib.hpp, зачем его повторять в include? Карл с вашим изменением. У меня такая же ошибка, как и раньше. –

+0

Если вы не измените инициализацию INCLUDE, вам необходимо включить ** # включить ** заголовок без * opencv2 * в начале -> '#include ' – karlphillip

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