你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
利用OpenCV实现人脸检测(五)
 

AfxMessageBox(L"无法加载分类器,请确认后重试!");

    }

    cvReleaseHaarClassifierCascade( &cascade );

}

void CFaceDetectionView::detect_and_draw(IplImage *img)  //人脸检与标示事件

{

    static CvScalar color[] = {0,0,255};//用于设置标示图像中人脸的颜色

    double scale = 1.3;

    IplImage* gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 );

    IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),cvRound (img->height/scale)),8,1 );

    int i;

    cvCvtColor( img, gray, CV_BGR2GRAY );

    cvResize( gray, small_img, CV_INTER_LINEAR );

    cvEqualizeHist( small_img, small_img );

    cvClearMemStorage( storage );

    if( cascade )

    {   //检测人脸

        CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, 1.1, 2, 0, cvSize(30, 30) ); 

        for( i = 0; i < (faces ? faces->total : 0); i++ )

        {

            CvRect* r = (CvRect*)cvGetSeqElem( faces, i );

            CvPoint center;

            int radius;

            center.x = cvRound((r->x + r->width*0.5)*scale);

            center.y = cvRound((r->y + r->height*0.5)*scale);

            radius = cvRound((r->width + r->height)*0.25*scale);

            cvCircle( img, center, radius, color[0], 3, 8, 0 );

        }

    }

    cvShowImage( "人脸检测", img );

    cvReleaseImage( &gray );

    cvReleaseImage( &small_img );

}

需要注意的是,本程序运行时应将分类器文件置于程序目录下,如果运行的是生成的EXE文件,则应将分类器文件与该EXE文件放在同一个目录下。

 

3 运行结果

运行该程序,选择人脸检测菜单项,弹出文件打开对话框,选择要检测的图像文件,程序就会将检测到的人脸用圆圈标示出来,如图3所示。本程序能顺利检测出大部分人脸,但由于光照、遮挡和倾斜等原因,部分人脸不能正确检测,另外。也有一些非人脸部分由于具有人脸的某些特征,也被当成了人脸,这些都是本程序需要改进的部分。


3

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089