opencv实现人脸检测
2014-07-28 12:36
429 查看
人脸检测原理就不多说了,不懂得话百度一下,资料很多。下面是opencv的实现代码
运行结果:
// 人脸检测_1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "cv.h" #include "highgui.h" #include <stdio.h> void displaydetection(IplImage* pInpImg,CvSeq* pFaceRectSeq,char* FileName); double scale=1.2; int main(int argc,char** argv) { IplImage* pInpImg=0; CvHaarClassifierCascade* pCascade=0; //指向后面从文件中加载的分类器 CvMemStorage* pStorage=0; //存储检测到的人脸数据 CvSeq* pFaceRectSeq; //用来接收检测函数返回的一系列的包含人脸的矩形区域 //初始化 pInpImg=cvLoadImage("e:\\picture\\renlian.jpg"); pStorage=cvCreateMemStorage(0); //创建默认大小为64k的动态内存区域 pCascade=(CvHaarClassifierCascade*)cvLoad( "D:\\Program Files\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml",0,0,0); //加载分类器 if (!pCascade) { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); return -1; } IplImage* gray = cvCreateImage(cvSize(pInpImg->width,pInpImg->height),8,1); IplImage* small_img=cvCreateImage(cvSize(cvRound(pInpImg->width/scale),cvRound(pInpImg->height/scale)),8,1); cvCvtColor(pInpImg,gray, CV_BGR2GRAY); cvResize(gray, small_img, CV_INTER_LINEAR); cvEqualizeHist(small_img,small_img); //直方图均衡化 //人脸检测 pFaceRectSeq=cvHaarDetectObjects(small_img,pCascade,pStorage, scale,2,CV_HAAR_DO_CANNY_PRUNING,cvSize(30,30)); //将检测到的人脸以矩形框标出。 displaydetection(pInpImg,pFaceRectSeq,argv[1]); cvReleaseImage(&pInpImg); cvReleaseHaarClassifierCascade(&pCascade); cvReleaseMemStorage(&pStorage); return 0; } void displaydetection(IplImage* pInpImg,CvSeq* pFaceRectSeq,char* FileName) { int i; cvNamedWindow("haar window",1); printf("the number of face is %d",pFaceRectSeq->total); for (i=0;i<(pFaceRectSeq?pFaceRectSeq->total:0);i++) { CvRect* r=(CvRect*)cvGetSeqElem(pFaceRectSeq,i); CvPoint pt1={r->x*scale,r->y*scale}; CvPoint pt2={(r->x+r->width)*scale,(r->y+r->height)*scale}; cvRectangle(pInpImg,pt1,pt2,CV_RGB(0,255,0),3,4,0); } cvShowImage("haar window",pInpImg); cvWaitKey(0); cvDestroyWindow("haar window"); }
运行结果:
相关文章推荐
- (学习笔记二)——基于opencv人脸检测原理及实现
- 用opencv实现简单的人脸检测
- 基于opencv人脸检测原理及实现
- OpenCV实现人脸检测
- mini6410成功移植OPENCV-2.0.0实现人脸检测
- opencv下haar方法实现对视频文件的人脸检测、跟踪
- JAVA应用JNI调用OpenCV实现人脸检测(1)
- JAVA应用JNI调用OpenCV实现人脸检测
- mini6410成功移植OPENCV-2.0.0实现人脸检测
- OpenCV&Qt学习之四——OpenCV 实现人脸检测与相关知识整理
- OpenCV实现人脸检测
- OpenCV与Compressive Tracking实现人脸的实时检测与跟踪
- android opencv 人脸检测实现
- VC6.0,OpenCV实现人脸特征检测
- 利用OpenCV实现人脸检测
- 【转】OpenCV实现人脸检测
- mini6410成功移植OPENCV-2.0.0实现人脸检测
- OpenCV中人脸检测代码实现
- OpenCV实现人脸检测
- 基于opencv人脸检测原理及实现