2012-07-09 2 views
1

Je lis l'articleFaceRecognizer dans OpenCV

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

et essayez d'exécuter le code facerec_lbph.cpp. Cependant, je suis tombé sur les erreurs suivantes:

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 

La version OpenCV est

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 

Et la version du système est fedora 16 qui est de 64 bits. Le fichier makefile que j'utilise est:

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 

Et je peux mettre à jour le rapport d'erreur chaque fois que de nouvelles informations sont nécessaires. Merci!

Répondre

2

Le problème est que vous utilisez OpenCV 2.3.1. Cette version d'OpenCV n'avait pas encore de cv :: FaceRecognizer, ce qui explique votre message d'erreur. Je vous suggère fortement de mettre à jour OpenCV 2.4.2.

La documentation est livré avec un grand nombre d'échantillons:

Toutefois, si vous ne pouvez pas mettre à jour les versions récentes de OpenCV, vous pouvez également essayer d'utiliser la version 0.03 de libfacerec (libfacerec est le projet que j'ai contribué à OpenCV). Il est compatible avec toutes les versions d'OpenCV 2.3. Il a une interface légèrement différente, mais les mêmes algorithmes. Voici les balises disponibles, vous pouvez télécharger:

+0

Merci! Je pensais que certaines classes sont définies dans les fichiers qui sont inclus dans le dossier src, mais après une brève lecture, j'ai pensé que peut-être les erreurs sont toujours dues à la liaison de la bibliothèque. Donc, je modifie ma question ci-dessus. – Iam619

+0

Veuillez voir la réponse mise à jour. – bytefish

+0

Oh, je viens de voir votre réponse mise à jour que j'utilise OpenCV 2.3.1 et le concept d'algorithme est introduit depuis la version 2.4. Merci beaucoup! – Iam619