faceRecognizer не был объявлен в этой области

0

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

 /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
  fereres@ubuntu:~/identification-build-desktop-Qt_4_8_1_in_PATH__System__Release$ 

В файле /usr/local/lib forlder имеется только папка python, в которой я не мог найти свои библиотеки.

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

  • 0
    Где находится строка 58 кода recognition/program.cpp ?
  • 0
    Моя строка 58: Ptr <FaceRecognizer> модель;
Показать ещё 3 комментария
Теги:
opencv
qt

1 ответ

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, то вам нужно #include заголовок без opencv2 в начале -> #include <contrib/contrib.hpp>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню