人脸检测--创新实验结题书
上传者:罗海福|上传时间: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月月考生物试卷
网友关注
- 驾校日常管理制度1
- 培养学生学习语文的兴趣
- 乒乓球
- 试卷-B2
- 注册安全工程师
- 大方县2015年农村义务教育阶段学校教师特设岗位计划实施细则
- 科目二坡道定点停车和起步的技巧
- 十个规定动作理论考试培训题库
- 一封让人流泪的英文情书
- 考试重点1
- 天使爱美丽改版计划
- 结构工程师报考简章
- 2015科目四考试满分技巧
- 南通市市属事业单位2015年上半年公开招聘工作人员教育教学理论笔试大纲.doc
- 中医刮痧
- “回头客”不断的海归教练
- 食品科学与工程专业三基题库答案
- 生物新授课模式
- 2015银行招聘考试时会用到的工具
- 驾考
- 24届计算机表演赛命题搜索答案之成语典故
- 学 科2
- 成都驾考科目二定点停车与坡道起步-图文教学
- 校长质量分析潜心教学教学
- 朱教授讲朱子
- 24届计算机表演赛命题搜索答案之数学类
- 科目二场地教学
- 经管员高级
- 2015银行校园招聘—笔试技巧行测部分(三)
- 毕节双山新区2015年农村义务教育阶段学校教师特设岗位计划招聘细则
网友关注视频
- 化学九年级下册全册同步 人教版 第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《中心对称和中心对称图形》
精品推荐
- 2016-2017学年高一语文人教版必修一+模块学业水平检测试题(含答案)
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
分类导航
- 互联网
- 电脑基础知识
- 计算机软件及应用
- 计算机硬件及网络
- 计算机应用/办公自动化
- .NET
- 数据结构与算法
- Java
- SEO
- C/C++资料
- linux/Unix相关
- 手机开发
- UML理论/建模
- 并行计算/云计算
- 嵌入式开发
- windows相关
- 软件工程
- 管理信息系统
- 开发文档
- 图形图像
- 网络与通信
- 网络信息安全
- 电子支付
- Labview
- matlab
- 网络资源
- Python
- Delphi/Perl
- 评测
- Flash/Flex
- CSS/Script
- 计算机原理
- PHP资料
- 数据挖掘与模式识别
- Web服务
- 数据库
- Visual Basic
- 电子商务
- 服务器
- 搜索引擎优化
- 存储
- 架构
- 行业软件
- 人工智能
- 计算机辅助设计
- 多媒体
- 软件测试
- 计算机硬件与维护
- 网站策划/UE
- 网页设计/UI
- 网吧管理