教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> > 调查/报告> 人脸检测--创新实验结题书

人脸检测--创新实验结题书

上传者:罗海福
|
上传时间:2015-05-06
|
次下载

人脸检测--创新实验结题书

人脸检测--创新实验结题书---韩尚颖

编号:

内容需要下载文档才能查看

数学与计算科学学院

创新性实验结题报告书

实验题目: 单张照片人脸检测

实验成绩(教师填写):

学 院: 数学与计算科学学院

专 业: 信息与计算科学

学生姓名: 韩尚颖 1200710218

小组成员: 覃启霞 1200710211

指导教师: 王东

2014 年 07月 25日

人脸检测--创新实验结题书---韩尚颖

摘 要:

人脸检测在计算机视觉领域是一个很基础性技术,我们组使用了基于openCV的Viola-Jones分类算法的haar 分类器的刚性物体检测技术;首先,需要使用openCV的createsamples()和haartraining()函数来训练分类器,然后使用detect_and_draw()函数来进行人脸的检测和标记;本实验是在windows环境下使用win32 API和VC实现了人脸检测的基本功能。

关键词: 人脸检测 openCV windows平台 Viola-Jones分类算法 haar 分类器

一、实验目的及主要创新性点:

1、熟悉和掌握openCV(open source computer vision library开源的计算机视觉库),并通过它提供的一些集成函数来实现对照片或视频的处理;

2、实现照片的人脸检测,并且我们又加入了调用摄像头或者现成的视频文件进行人脸检测;

3、同时进一步掌握了VC和win32编程的技巧和方法。

二、实验要求:

1、 实现单张照片的人脸检测和标记;

2、 熟悉怎么使用Windows API函数设计窗口界面,实现人脸检测功能;

3、 了解Windows API 编程的方法与技能的;

4、 掌握VC和openCV的基础知识;

三、实验原理:

[一].人脸检测算法原理:Viola-Jones人脸检测方法

该算法的主要特征:

1.提出积分图像(integral image),从而可以快速计算Haar-like特征。

2.利用Adaboost学习算法进行特征选择和分类器训练,把弱分类器组 合成强分类器。

3.采用分类器级联提高效率。

[二].openCV检测原理

因为openCV中已经有预先训练好的一些物体识别文件(haar 分类器),所以我们组决定不在自己训练,因为这需要大量的经过处理的图片,任务过去繁重。

第二步,我们使用detect_and_draw()函数来识别、标记人脸,其中代码函数中有一个颜色向量的数组colors[],可以不同颜色标记人脸;分类器在灰度图上进行检测,所以RGB图首先通过cvCvtClolor()转化成灰度图,还可以用cvResize()调整大小,然

人脸检测--创新实验结题书---韩尚颖

后通过cvEqualizeHist()进行直方均衡;cvHaarDetectObjects()以不同的窗口扫描输入的图形寻找人脸,人脸检测会有多次重复,这里默认3次,我们才认为人脸确实存在,防止误检验。

主要步骤为:

1.加载分类器。

用cvLoad函数读入xml格式的文件。

2.读入待检测图像。读入图片、视频或者调用摄像头采集。

3.检测并标示人脸,显示人脸检测数目和用时。

四、实验内容与步骤(部分代码):

1、首先,在VS2010平台下建立win32 项目,设计基本对话框样式和功能按钮; (1)三个按钮:

btn[0] = CreateWindow(TEXT("button"),TEXT("单张照片识别"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,40,40,100,30,hWnd,(HMENU)0,hInstance,NULL);

btn[1] = CreateWindow(TEXT("button"),TEXT("摄像识别"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,40,80,100,30,hWnd,(HMENU)1,hInstance,NULL);

btn[2] = CreateWindow(TEXT("button"),TEXT("视频识别"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,40,120,100,30,hWnd,(HMENU)2,hInstance,NULL);

(2)显示人脸识别数和用时:

TextOut(hdc,250,180,TEXT("人脸识别用时(纳秒):"),11);

TextOut(hdc, 400,180, szText1, wsprintf(szText1, TEXT("%d"), ti)); TextOut(hdc,250,200,TEXT("人脸识别个数:"),7);

TextOut(hdc, 380,200, szText1, wsprintf(szText1, TEXT("%d"), fa));

2、编写对应按钮的功能函数,加入openCV函数;

const char* cascade_name =

"haarcascade_frontalface_alt2.xml";//Haar分类器

/* "haarcascade_profileface.xml";*/

(1)人脸检测标记函数

void detect_and_draw( IplImage* img )//人脸检测标记函数

{

static CvScalar colors[] = //一般用来存放像素值(不一定是灰度值哦)的 {

{{0,0,255}},//画圆的那个线条颜色

{{0,128,255}},

{{0,255,255}},

{{0,255,0}},

{{255,128,0}},

{{255,255,0}},

{{255,0,0}},

人脸检测--创新实验结题书---韩尚颖

{{255,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),//对一个double型的数进行四舍五入,并返回一个整型数!

cvRound (img->height/scale)), 8, 1 );//缩放

int i;

cvCvtColor( img, gray, CV_BGR2GRAY );//颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像。

cvResize( gray, small_img, CV_INTER_LINEAR );//调整3通道图像(如RGB图像)和单通道图像的大小。

cvEqualizeHist( small_img, small_img );//用来使灰度图象直方图均衡化 cvClearMemStorage( storage );

if( cascade )

{

double t = (double)cvGetTickCount();//获取操作系统启动所经过(elapsed)的毫秒数

CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, //用来检测图像中的目标

1.1, 2, 0/*CV_HAAR_DO_CANNY_PRUNING*/,//利用Canny边缘检测器 cvSize(20, 20) );

t = (double)cvGetTickCount() - t;

ti=((t/((double)cvGetTickFrequency()))/1000000.0);

fa=faces->total;

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, colors[i%8], 3, 8, 0 );

//画圆标记

}

}

cvWaitKey(0);

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

cvReleaseImage( &gray );

cvReleaseImage( &small_img );

}

人脸检测--创新实验结题书---韩尚颖

//将TCHAR转为char

//*tchar是TCHAR类型指针,*_char是char类型指针

void TcharToChar (const TCHAR * tchar, char * _char)

{

int iLength ;

//获取字节长度

iLength = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL); //将tchar值赋给_char

WideCharToMultiByte(CP_ACP, 0, tchar, -1, _char, iLength, NULL, NULL); }

(2)照片识别

void picturetext (TCHAR a[])//照片识别

{

CHAR b[260];

TcharToChar(a,b);

//CvCapture* capture = 0;//视频摄像头

IplImage *frame, *frame_copy = 0;//图形结构

cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );

//导入分类器

storage = cvCreateMemStorage(0);

//创建内存空间

cvNamedWindow( "result", 1 );

const char* filename = (char*)b;

IplImage* image = cvLoadImage( filename, 1 );

if( image )

{

detect_and_draw( image );

cvWaitKey(0);

cvReleaseImage( &image );

}

else

{

/* assume it is a text file containing the

list of the image filenames to be processed - one per line */ FILE* f = fopen( filename, "rt" );

if( f )

{

char buf[1000+1];

while( fgets( buf, 1000, f ) )

{

int len = (int)strlen(buf);

while( len > 0 && isspace(buf[len-1]) )

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注视频

化学九年级下册全册同步 人教版 第25集 生活中常见的盐(二)
冀教版小学数学二年级下册第二单元《有余数除法的整理与复习》
【获奖】科粤版初三九年级化学下册第七章7.3浓稀的表示
第4章 幂函数、指数函数和对数函数(下)_六 指数方程和对数方程_4.7 简单的指数方程_第一课时(沪教版高一下册)_T1566237
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,辽宁省
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,辽宁省
沪教版牛津小学英语(深圳用) 四年级下册 Unit 4
沪教版牛津小学英语(深圳用) 四年级下册 Unit 7
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
沪教版牛津小学英语(深圳用) 四年级下册 Unit 12
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
沪教版牛津小学英语(深圳用) 五年级下册 Unit 12
第12章 圆锥曲线_12.7 抛物线的标准方程_第一课时(特等奖)(沪教版高二下册)_T274713
二年级下册数学第三课 搭一搭⚖⚖
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,广东省
外研版八年级英语下学期 Module3
沪教版牛津小学英语(深圳用) 四年级下册 Unit 3
冀教版英语三年级下册第二课
冀教版小学数学二年级下册第二单元《余数和除数的关系》
飞翔英语—冀教版(三起)英语三年级下册Lesson 2 Cats and Dogs
冀教版小学数学二年级下册1
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,湖北省
冀教版小学英语四年级下册Lesson2授课视频
二年级下册数学第二课
北师大版小学数学四年级下册第15课小数乘小数一
沪教版牛津小学英语(深圳用) 四年级下册 Unit 8
第五单元 民族艺术的瑰宝_16. 形形色色的民族乐器_第一课时(岭南版六年级上册)_T1406126
苏科版数学八年级下册9.2《中心对称和中心对称图形》