2012-05-05 2 views
0

Я здесь новый. В настоящее время я делаю несколько простых проектов, используя opencv. Мой настоящий проект в opencv - обнаружение лица. У меня есть коды, как указано ниже:распознавание лица opencv; где разместить «haarcascade_frontalface_alt.xml»?

#include <stdio.h> 
#include "cv.h" 
#include "highgui.h" 

CvHaarClassifierCascade *cascade; 
CvMemStorage   *storage; 

void detectFaces(IplImage *img); 

int main(int argc, char** argv) 
{ 
     CvCapture *capture; 
IplImage *frame; 
int  key; 
char  *filename = "haarcascade_frontalface_alt.xml"; 

cascade = (CvHaarClassifierCascade*)cvLoad(filename, 0, 0, 0); 
storage = cvCreateMemStorage(0); 
capture = cvCaptureFromCAM(0); 

assert(cascade && storage && capture); 

cvNamedWindow("video", 1); 

while(key != 'q') { 
    frame = cvQueryFrame(capture); 

    if(!frame) { 
     fprintf(stderr, "Cannot query frame!\n"); 
     break; 
    } 

    cvFlip(frame, frame, -1); 
    frame->origin = 0; 

    detectFaces(frame); 

    key = cvWaitKey(10); 
} 

cvReleaseCapture(&capture); 
cvDestroyWindow("video"); 
cvReleaseHaarClassifierCascade(&cascade); 
cvReleaseMemStorage(&storage); 

return 0; 
} 

void detectFaces(IplImage *img) 
{ 
int i; 

CvSeq *faces = cvHaarDetectObjects(
     img, 
     cascade, 
     storage, 
     1.1, 
     3, 
     0 /*CV_HAAR_DO_CANNY_PRUNNING*/, 
     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("video", img); 
} 

То, что я застрял прямо сейчас, где я должен поместить файл XML? Мой текущий каталог для opencv2.1 находится на C: /OpenCV2.1.

Может ли кто-нибудь помочь мне в этом вопросе? Спасибо

ответ

0

Поскольку вы загружаете этот символ * filename = "haarcascade_frontalface_alt.xml"; Затем вам нужно поместить ваш xml-файл в текущий каталог. Если он находится в другом каталоге, ищите его вместо char * filename = "C: //opencv//...haarcascade_frontalface_alt.xml";

0

Если вы используете приложение с помощью своего значка в проводнике Windows, поместите XML-файл рядом с ним.

Если вы используете терминал командной строки, поместите XML в текущий рабочий каталог.

0

Лучше поместить каскадный файл Хаара в:

Во-первых, поместите файл Haar_cascade.xml в папке решения вашего проекта (VS папки проекта среда)

шаги: 1. Право щелкните файл решений. 2. Нажмите «Свойства конфигурации» 3. Нажмите «Отладка». 4. Под отладкой. С правой стороны под Аргументы команды укажите имя вашего каскадного xml. Например haar_cascade_frontalface.xml

0

Вы можете потребительных

face_cascade.load("d:\\haarcascade_frontalface_alt.xml") 

Так что код выглядит как-

/** @function main */ 
int main(int argc, const char** argv) 
{ 
    CvCapture* capture; 
    Mat frame; 
    face_cascade.load("F:\\haarcascade_frontalface_alt.xml"); 
    eyes_cascade.load("F:\\haarcascade_eye_tree_eyeglasses.xml"); 
+0

пожалуйста, это 2014 в настоящее время. * stop * используя устаревший c-api. – berak