C++ 此作用域中未声明faceRecognizer
我正在使用支持人脸识别的opencv的2.4.7版本。但是,我收到以下错误:C++ 此作用域中未声明faceRecognizer,c++,qt,opencv,C++,Qt,Opencv,我正在使用支持人脸识别的opencv的2.4.7版本。但是,我收到以下错误: /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 INCLUDEPATH += "/home/fereres/Desktop/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
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"
编辑:
自从我刚换了电脑,程序就开始工作了。我按照相同的说明安装了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文件夹只包含一个python文件夹,我在那里找不到我的libs
编辑2:
我再次安装了opencv,现在一切正常。我猜安装opencv的最后一步不起作用,所以我的/usr/local文件夹是空的。现在一切都在控制之中。您最好将
INCLUDEPATH
初始化调整为以下值,否则路径开头引用opencv2的每个#include
语句都会导致编译错误:
/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
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
,因为您包含了contrib.hpp的确切路径,为什么要把它再次放在包含中?Karl在编辑时,我得到了与以前相同的错误。如果不更改包含初始化,则需要在开始时包含没有opencv2的标题-->\INCLUDE
识别/program.cpp第58行的代码在哪里?我的第58行:Ptr模型;当你以顺势疗法的剂量提供重要信息时,很难提供帮助。您是否记得使用名称空间cv编写代码>?是的。正如我在最初的帖子中所说的,我的问题是在换电脑的时候出现的。代码运行良好。确实如此,而且这个问题似乎完全与路径有关。更具体地说,这是一个如何#包含
标题与如何在包含路径
中设置路径之间的问题(假设它们确实存在于您的计算机中)。