我正在使用http://docs.opencv.org/trunk/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.html的面部识别示例。
如果相关,我在ubuntu上使用eclipse。之前我使用的是2.3.1,但是它出现了错误‘FaceRecognizer’ was not declared in this scope
所以经过这里的回复后https://stackoverflow.com/a/11399099/824239我在不同的路径上更新了opencv的2.4.5版本,但是以前版本的opencv还在机器上。现在将我的包含路径和库指向eclipse项目中的新位置后,我仍然遇到同样的错误。
make all
Building file: ../src/faceRec_vid.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/local/research/opencv/include/opencv2 -I/usr/local/research/opencv/include/opencv -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/faceRec_vid.d" -MT"src/faceRec_vid.d" -o"src/faceRec_vid.o" "../src/faceRec_vid.cpp"
../src/faceRec_vid.cpp: In function ‘int main(int, const char**)’:
../src/faceRec_vid.cpp:87:9: error: ‘FaceRecognizer’ was not declared in this scope
../src/faceRec_vid.cpp:87:23: error: template argument 1 is invalid
../src/faceRec_vid.cpp:87:31: error: invalid type in declaration before ‘=’ token
../src/faceRec_vid.cpp:87:60: error: ‘createFisherFaceRecognizer’ was not declared in this scope
../src/faceRec_vid.cpp:88:10: error: base operand of ‘->’ is not a pointer
../src/faceRec_vid.cpp:118:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
../src/faceRec_vid.cpp:136:35: error: base operand of ‘->’ is not a pointer
make: *** [src/faceRec_vid.o] Error 1
我错过了将eclipse项目指向正确版本所需要做的任何事情。我怎样才能摆脱这个错误。
答案 0 :(得分:0)
你说你已经“更新”到2.4.5但OpenCV 2.3.1仍然存在意味着你已经在不同的路径上安装了2.4.5。您遇到了相同的错误,因为您没有正确配置eclipse以使用OpenCV 2.4.5库。你的/ usr / local / lib似乎有2.3.1 so(共享对象)文件,因为你没有要求eclipse链接新的库(没有-l与g ++一起传递),默认情况下它与旧库链接。 / p>
要做到这一点, 转到项目 - >属性。
展开 GCC C ++链接器,然后点击库。
在库搜索路径(-L)中,填写已安装OpenCV2.4.5的路径。
然后在库(-l)中添加您可能需要的OpenCV库(opencv_core opencv_imgproc opencv_highgui)
答案 1 :(得分:0)
你现在可能已经解决了这个问题,但如果你还没有解决这个问题。
当我自己尝试教程代码时,我遇到了这个问题。您需要包含<opencv2/contrib/contrib.hpp>
。希望有所帮助。