人脸检测
2015-09-22 14:04
344 查看
void CLookFace::detect_and_draw() { CvHaarClassifierCascade *pHaarClassCascade; pHaarClassCascade = (CvHaarClassifierCascade*)cvLoad(pcascadeName); //load the test image IplImage *pSrcImage = cvLoadImage("D:\\24.jpg", CV_LOAD_IMAGE_UNCHANGED); IplImage *pGrayImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1); if (pSrcImage == NULL || pGrayImage == NULL) { printf("can't load image!\n"); return; } cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY); if (pHaarClassCascade != NULL && pSrcImage != NULL && pGrayImage != NULL) { const static CvScalar colors[] = { CV_RGB(0, 0, 255), CV_RGB(0, 128, 255), CV_RGB(0, 255, 255), CV_RGB(0, 255, 0), CV_RGB(255, 128, 0), CV_RGB(255, 255, 0), CV_RGB(255, 0, 0), CV_RGB(255, 0, 255) }; CvMemStorage *pcvMemStorage = cvCreateMemStorage(0); cvClearMemStorage(pcvMemStorage); //detect the face int TimeStart, TimeEnd; TimeStart = GetTickCount(); CvSeq *pcvSeqFaces = cvHaarDetectObjects(pGrayImage, pHaarClassCascade, pcvMemStorage); TimeEnd = GetTickCount(); printf("the number of faces: %d\nSpending Time: %d ms\n", pcvSeqFaces->total, TimeEnd - TimeStart); //mark the face for (int i = 0; i <pcvSeqFaces->total; i++) { CvRect* r = (CvRect*)cvGetSeqElem(pcvSeqFaces, i); CvPoint center; int radius; center.x = cvRound((r->x + r->width * 0.5)); center.y = cvRound((r->y + r->height * 0.5)); radius = cvRound((r->width + r->height) * 0.25); cvCircle(pSrcImage, center, radius, colors[i % 8], 2); } cvReleaseMemStorage(&pcvMemStorage); } const char *pstrWindowsTitle = "FaceDetect Demo"; cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE); cvShowImage(pstrWindowsTitle, pSrcImage); cvWaitKey(0); cvDestroyWindow(pstrWindowsTitle); cvReleaseImage(&pSrcImage); cvReleaseImage(&pGrayImage); }
相关文章推荐
- 实现简单易用的图片轮播器
- 内核与内核模块:depmod,lsmod,modinfo,insmod,rmmod,mdprobe
- 左右Map
- 代理模式及其在spring与struts2中的体现
- getcwd
- Linux 的启动流程
- Win7系统删除文件提示“文件名过长”怎么办?原因分析以及解决方法
- *****socket同步异步阻塞非阻塞区别
- PHP抓取网站图片脚本
- Unity3D研究院之与Android相互传递消息(十九)
- PHP的一个加密算法
- 数据库时间小技巧 - 取数据库中时间格式是12小时制的时间,如何显示成24小时制
- Debug系列:VC++程序Release版崩溃的解决办法
- ContentProvider的详细用法
- Ubuntu sublime 下载安装
- 一款非常不错的可拖曳空间
- unity3dGUI教程
- NSBundle详解
- 数据挖掘-概念与技术-第10章聚类作业题
- openstack启动云主机的流程