2012-07-09 51 views
1

我读的文章FaceRecognizer在OpenCV中

http://docs.opencv.org/trunk/modules/contrib/doc/facerec/facerec_tutorial.html#conclusion

,并尝试运行代码facerec_lbph.cpp。但是,我遇到了以下错误:

facerec_lbph.cpp:109:9: error: ‘FaceRecognizer’ was not declared in this scope 
facerec_lbph.cpp:109:23: error: template argument 1 is invalid 
facerec_lbph.cpp:109:31: error: invalid type in declaration before ‘=’ token 
facerec_lbph.cpp:109:58: error: ‘createLBPHFaceRecognizer’ was not declared in this scope 
facerec_lbph.cpp:110:10: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:113:31: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:132:10: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:136:27: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:144:18: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:145:18: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:146:18: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:147:18: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:148:18: error: base operand of ‘->’ is not a pointer 
facerec_lbph.cpp:151:35: error: base operand of ‘->’ is not a pointer 

在OpenCV的版本是

opencv-2.3.1-3.fc16.x86_64 
opencv-python-2.3.1-3.fc16.x86_64 
opencv-devel-2.3.1-3.fc16.x86_64 
opencv-devel-docs-2.3.1-3.fc16.noarch 

而且系统版本的Fedora 16,它是64位。我使用的生成文件是:

CC = g++ 

SRC = facerec_lbph.cpp 
TARGET = main 

OBJS = facerec_lbph.o 


INCDIRS = -I/usr/include/opencv -I/usr/include/opencv2 
LIBDIRS = -L/usr/lib64 

CFLAGS = -g $(INCDIRS) 
LFLAGS = -lopencv_core -lopencv_highgui -lopencv_video -lopencv_imgproc -lopencv_objdetect -lopencv_ml -lopencv_contrib 


all: $(OBJS) 
    $(CC) -o $(TARGET) $(OBJS) $(INCDIRS) $(LIBDIRS) $(LFLAGS) 
main.o: $(SRC) $(INCLUDE) 
    $(CC) -c $(SRC) $(INCLUDE) $(INCDIRS) $(LIBDIRS) $(LFLAGS) 

clean: 
    rm -f $(TARGET) $(OBJS) *.gch 

而且,只要需要新信息,我就可以更新错误报告。谢谢!

回答

2

问题是,您使用的是OpenCV 2.3.1。这个OpenCV版本还没有cv :: FaceRecognizer,所以这就解释了你的错误信息。我强烈建议你更新到OpenCV 2.4.2。

文档自带了大量的样本:

但是,如果您不能更新到最新版本的OpenCV的,你也可以尝试使用0.03版libfacerec(libfacerec是我贡献给OpenCV的项目)。它与所有OpenCV 2.3版本兼容。它有一个稍微不同的界面,但算法相同。以下是可用的标签,你可以下载:

+0

谢谢!我认为一些类是在src文件夹中包含的文件中定义的,但是在简短的阅读之后,我想也许这些错误仍然是由于链接库引起的。所以我编辑我的问题上面。 – Iam619 2012-07-09 16:29:10

+0

请参阅最新的答案。 – bytefish 2012-07-09 16:55:04

+0

哦,我刚刚看到你使用OpenCV 2.3.1的最新答案,算法概念自2.4版本开始引入。非常感谢你! – Iam619 2012-07-09 18:32:01