资源描述:
《基于OPENCV的人脸识别程序-代码详解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、#include"cv.h"#include"highgui.h"#include#ifdef_EiC#defineWIN32#endifstaticCvMemStorage*storage=0;staticCvHaarClassifierCascade*cascade=0;voiddetect_and_draw(IplImage*image);constchar*cascade_name="haarcascade_frontalface_alt.xml";//人脸检测分类器intmain(intargc,char*
2、*argv){CvCapture*capture=0;IplImage*frame,*frame_copy=0;intoptlen=strlen("--cascade=");constchar*input_name;if(argc>1&&strncmp(argv[1],"--cascade=",optlen)==0){cascade_name=argv[1]+optlen;input_name=argc>2?argv[2]:0;}else{cascade_name="E:毕业设计智能机器人动态人脸识别系统陈建州程序.xml";/
3、/分类器路径input_name=argc>1?argv[1]:0;}cascade=(CvHaarClassifierCascade*)cvLoad(cascade_name,0,0,0);if(!cascade)//如果没有找到分类器,输出以下{fprintf(stderr,"ERROR:Couldnotloadclassifiercascade");fprintf(stderr,"Usage:facedetect--cascade=""[filename
4、camera_index]");r
5、eturn-1;}storage=cvCreateMemStorage(0);capture=cvCaptureFromCAM(!input_name?0:input_name[0]-'0');//读取摄像头if(!capture)//如果没有摄像头读取视频文件capture=cvCaptureFromAVI("检测.avi");cvNamedWindow("result",1);//创建窗口if(capture){for(;;){if(!cvGrabFrame(capture))//从摄像头中抓取帧break;frame=cvRet
6、rieveFrame(capture);//读取上边抓取的帧if(!frame)break;if(!frame_copy)frame_copy=cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_8U,frame->nChannels);if(frame->origin==IPL_ORIGIN_TL)cvCopy(frame,frame_copy,0);elsecvFlip(frame,frame_copy,0);detect_and_draw(frame_copy);
7、if(cvWaitKey(10)>=0)break;}cvReleaseImage(&frame_copy);cvReleaseCapture(&capture);}else//没检测到视频文件或者摄像头{constchar*filename=(char*)"检测.jpg";//读图片IplImage*image=cvLoadImage(filename,1);if(image){detect_and_draw(image);cvWaitKey(0);cvReleaseImage(&image);}else{FILE*f=fopen(
8、filename,"rt");if(f){charbuf[1000+1];while(fgets(buf,1000,f)){intlen=(int)strlen(buf);while(len>0&&isspace(buf[len-1]))len--;buf[len]=' ';image=cvLoadImage(buf,1);if(image){detect_and_draw(image);cvWaitKey(0);cvReleaseImage(&image);}}fclose(f);}}}cvDestroyWindow("resul
9、t");return0;}voiddetect_and_draw(IplImage*img){staticCvScalarcolors[]={{{0,0,255}},{{0,128,255}},{{0,255,255}}