Я использую 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 папка была пуста. Теперь все под контролем.
Вероятно, вам лучше настроить инициализацию 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
.
#include <contrib/contrib.hpp>
recognition/program.cpp
?