Bonjour, j'ai un petit problème lors de exécution du programme (Face tracking : implémentation de la méthode de Viola & Jones en C++):
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
OpenCV Error: Null pointer (Invalid classifier cascade) in cvHaarDetectObjectsForROC, file /home/yihao/opencv-2.4.11/modules/objdetect/src/haar.cpp, line 1514
terminate called after throwing an instance of 'cv::Exception'
what(): /home/yihao/opencv-2.4.11/modules/objdetect/src/haar.cpp:1514: error: (-27) Invalid classifier cascade in function cvHaarDetectObjectsForROC
merci d'avance!!!
Salut, à en juger par le message d'erreur que tu obtiens, il semblerait que le classifier que tu tente de charger ne soit pas bon.
Il est possible que ce soit parce que le fichier en question n'est pas un classifier valide ou encore parce que le path vers ce fichier est incorrecte.
Peux-tu mettre le message d'erreur entre balises [code]ton code ici[/code] stp (plus facile pour la lecture) ? Merci.
On peut voir ton code aussi ? (place-le également entre balises stp).
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
OpenCV Error: Null pointer (Invalid classifier cascade) in cvHaarDetectObjectsForROC, file /home/yihao/opencv-2.4.11/modules/objdetect/src/haar.cpp, line 1514
terminate called after throwing an instance of 'cv::Exception'
what(): /home/yihao/opencv-2.4.11/modules/objdetect/src/haar.cpp:1514: error: (-27) Invalid classifier cascade in function cvHaarDetectObjectsForROC
J'utilise le code donner sur le site :
/*
* FaceDetect.cpp
*
* Created on: Mar 11, 2015
* Author: yihao
*/
/*------------------------------------------------*/
#include <stdio.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv/cxcore.h>
/*------ Declaration des variables globales ------*/
char key;
CvHaarClassifierCascade *cascade;
CvMemStorage *storage;
/*---------- Declaration des fonctions -----------*/
void detectFaces(IplImage *img);
/*------------------------------------------------*/
int main(void)
{
/* Declaration des variables */
CvCapture *capture;
IplImage *img;
const char *filename = "/home/workspace/FaceDetect/src/haarcascade_frontalface_alt.xml";
/* Chargement du classifieur */
cascade = (CvHaarClassifierCascade*)cvLoadHaarClassifierCascade( filename, cvSize(24, 24) );
/* Ouverture du flux video de la camera */
capture = cvCreateCameraCapture(-1);
// Ouverture d'un fichier video
//capture = cvCreateFileCapture("/home/download/video.mp4");
/* Initialisation de l'espace memoire */
storage = cvCreateMemStorage(0);
/* Creation d'une fenetre */
cvNamedWindow("Window-FT", 1);
/* Boucle de traitement */
while(key != 'q')
{
img = cvQueryFrame(capture);
detectFaces(img);
key = cvWaitKey(10);
}
/* Liberation de l'espace memoire*/
cvReleaseCapture(&capture);
cvDestroyWindow("Window-FT");
cvReleaseHaarClassifierCascade(&cascade);
cvReleaseMemStorage(&storage);
return 0;
}
/*------------------------------------------------*/
void detectFaces(IplImage *img)
{
/* Declaration des variables */
int i;
CvSeq *faces = cvHaarDetectObjects(img, cascade, storage, 1.1, 3, 0, cvSize(40,40));
for(i=0; i<(faces?faces->total:0); i++)
{
CvRect *r = (CvRect*)cvGetSeqElem(faces, i);
cvRectangle(img, cvPoint(r->x, r->y), cvPoint(r->x + r->width, r->y + r->height), CV_RGB(255, 0, 0), 1, 8, 0);
}
cvShowImage("Window-FT", img);
}
Je vais essayer de relancer le programme avec un autre classifier
D'après moi le problème se situe ligne 24. Es-tu sûr que ton fichier haarcascade_frontalface_alt.xml existe bien à l'emplacement indiqué ?
Dans un premier temps, donne un nom plus simple au fichier et place-le directement dans /home :
const char *filename = "/home/haar.xml";
[EDIT] question toute bête : tu es bien sous Linux ?
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
OpenCV Error: Null pointer (Invalid classifier cascade) in cvHaarDetectObjectsForROC, file /home/yihao/opencv-2.4.11/modules/objdetect/src/haar.cpp, line 1514
terminate called after throwing an instance of 'cv::Exception'
what(): /home/yihao/opencv-2.4.11/modules/objdetect/src/haar.cpp:1514: error: (-27) Invalid classifier cascade in function cvHaarDetectObjectsForROC
je sais pas le problème, c'est a cause de linux ou le code .
Bon, comme je sens que ça va durer une plombe, tu va répondre précisément à ces questions :
1. Que te retourne la commande shell suivante :
ls /home
2. Tu dis que tu a chopé le classifieur sur le site : tu as bien fais Enregistrer et pas un simple copié collé du texte qui apparaissait ?
3. Tu as du te planter dans l'insertion de ton image. Il faut que tu mette l'URL de ton image entre balises [img][/img] et bien évidemment que cet URL corresponde à un fichier image.
4. Sur une échelle de 1 à 10, tu te situe où en terme de programmation C et shell Linux ?