J'ai réussi à effectuer une simple détection et un suivi du visage et des yeux. Ce n'est pas trop précis mais ça marche. Je me demandais s'il y avait un moyen dans la bibliothèque OpenCV où je pourrais extraire les coordonnées des yeux et du visage quand il se déplace et l'imprimer dans la console en temps réel. Ou peut-être même enregistrer ces coordonnées dans un fichier de sortie.Impression de coordonnées oculaires grâce au suivi OpenCV
UPDATE (code pour le visage et la détection des yeux):
int detect(IplImage* img, const char* cascade_name) {
static CvMemStorage* storage = 0;
static CvHaarClassifierCascade* cascade = 0;
int scale = 1;
int i;
IplImage* temp = cvCreateImage(cvSize(img->width/scale,img->height/scale), 8, 3);
//Load Cascade
cascade = (CvHaarClassifierCascade*)cvLoad(cascade_name, 0, 0, 0);
if(!cascade)
{
fprintf(stderr, "ERROR: Could not load classifier cascade!\n");
return 0;
}
storage = cvCreateMemStorage(0);
cvClearMemStorage(storage);
int faceDetected = 0;
if(cascade)
{
//In case there is more than one face
CvSeq* faces = cvHaarDetectObjects(img, cascade, storage,
1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
cvSize(40, 40));
faceDetected = (faces ? faces->total : 0);
for(i = 0; i < (faces ? faces->total : 0); i++)
{
CvRect* r = (CvRect*)cvGetSeqElem(faces, i);
//Maybe this is where I get the coordinates?
pt1.x = r->x*scale;
pt2.x = (r->x+r->width)*scale;
pt1.y = r->y*scale;
pt2.y = (r->y+r->height)*scale;
//Draw rectangle over face
cvRectangle(img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0);
}
}
cvReleaseImage(&temp);
return faceDetected;
}
oui vous pouvez. pas besoin de s'interroger. – Barshan
J'aurais dû être plus direct. Ma question est comment? Quelles méthodes devrais-je appeler pour le faire. J'ai essayé de regarder les documents OpenCV et je n'ai rien trouvé de plus simple pour moi. Je suis nouveau à la vision par ordinateur FYI. –
montrez-moi la fonction dans votre code qui détecte les yeux ou le visage – Barshan