2013-05-02 74 views
0

我正在使用面部识别示例: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仍在机器上。现在在将我的include路径和库引导到eclipse项目中的新位置后,我仍然得到相同的错误。Facerecognizer with opencv 2.4.5

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

你说你已经“更新”到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 ++传递),它默认与旧库链接。

要做到这一点, 前往项目 - >属性

展开GCC C++链接器并点击

库搜索路径(-L)中,填写已安装OpenCV2.4.5的路径。

然后在库(-l)现在补充一点,你可能需要你可能解决了这个OpenCV的库(opencv_core opencv_imgproc opencv_highgui)

+0

我已经做到了。库搜索路径指向opencv2.4.5库。 – 2013-05-22 09:23:11

+1

@UmairR。那为什么'g ++'用-l或-L调用opencv库?您是否尝试使用'g ++ -I/usr/local/research/opencv/include/opencv2 -I/usr/local/research/opencv/include/opencv -O0 -g3编译'faceRec_vid.cpp'文件-Wall -c -L $ OPENCVLIBS_DIR -o“src/faceRec_vid.o”“../ src/faceRec_vid.cpp”'。其中$ OPENCVLIBS_DIR是链接器可以找到opencv2.4.5库的目录。 – PraveenPalanisamy 2013-06-23 15:01:45

+0

你有一个有效的poitn在这里,但我不知道为什么它(日食)不调用-l或-L选项。无论如何,即使上面的命令,你说我得到完全相同的错误。 – 2013-06-27 14:57:52

0

,但如果你没有,这是我的解决方案。 当我尝试教程代码时,我遇到了这个问题。您需要包含<opencv2/contrib/contrib.hpp>。希望有所帮助。