你好,请问怎么把opencv 训练 人脸论坛中的人脸检测例子,转换成在MFC中实现??

openCV 读取摄像头 人脸检测
[问题点数:40分]
openCV 读取摄像头 人脸检测
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。工具类服务
编辑部专用服务
作者专用服务
MFC下利用OpenCV进行人脸检测的研究与实现
为了实现对人脸检测的目的,本文采用基于MFC框架下使用OpenCV视觉库的方法.文章重点分析了一种人脸检测中使用的特征分类算法:Adaboost 算法.文中阐述了该算法的原理,图文并茂地展示了如何在实际中利用人脸库结合Adaboost算法来训练分类器,并生成XML文件.在VC6.0下,搭建了人脸检测的界面,利用OpenCV的函数调用训练所生成的XML文件,实现了在本地选择图片并对其进行人脸检测的功能.此外,系统还支持读取本地AVI格式视频和从摄像头捕捉到的视频,可手动截取一帧图片进行人脸检测.实验结果表明该设计方案具有较高的准确性和稳定性,基本达到预期的效果.
Abstract:
In order to detect human faces , the method of OpenCV vision library based on the MFC frame-work was used .It was focused on analyzing a kind of feature classification algorithm which is used in face detec-tion , named Adaboost algorithm .The principle of the algorithm was described and how to use face database com-bined with Adaboost algorithm to train the classifier in practice was discussed .And then, during the training, some XML documents were generated .Under the environment of Visual c ++6.0 , a face detection interface was built and the functions of OpenCV were used to call the XML documents .Then users can choose local ima-ges for face detection .In addition , the system also supports to read the AVI format video captured from the cam-era.And users can manually capture a picture for face detection .The results show that the design has a high ac-curacy and stability , essential to achieve the desired effect .
CHENG Jian
作者单位:
大连海事大学信息科学技术学院,辽宁 大连,116026
年,卷(期):
Keywords:
机标分类号:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社& & & & OpenCV的人脸检测功能在一般场合还是不错的。而ubuntu正好提供了python-opencv这个包,用它可以方便地实现人脸检测的代码。& & 写代码之前应该先安装python-opencv:& & 复制代码代码如下:& & $ sudo apt-get install python-opencv& & 具体原理就不多说了,可以参考一下这篇文章。直接上源码。& & 复制代码代码如下:& & #!/usr/bin/python& & # -*- coding: UTF-8 -*-& & # face_detect.py& & # Face Detection using OpenCV. Based on sample code from:& & # /m76db1d6b& & # Usage: python face_detect.py & & import sys, os& & from opencv.cv import *& & from opencv.highgui import *& & from PIL import Image, ImageDraw& & from math import sqrt& & def detectObjects(image):& & """Converts an image to grayscale and prints the locations of any faces found"""& & grayscale = cvCreateImage(cvSize(image.width, image.height), 8, 1)& & cvCvtColor(image, grayscale, CV_BGR2GRAY)& & storage = cvCreateMemStorage(0)& & cvClearMemStorage(storage)& & cvEqualizeHist(grayscale, grayscale)& & cascade = cvLoadHaarClassifierCascade(& & '/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml',& & cvSize(1,1))& & faces = cvHaarDetectObjects(grayscale, cascade, storage, 1.1, 2,& & CV_HAAR_DO_CANNY_PRUNING, cvSize(20,20))& & result = []& & for f in faces:& & result.append((f.x, f.y, f.x+f.width, f.y+f.height))& & return result& & def grayscale(r, g, b):& & return int(r * .3 + g * .59 + b * .11)& & def process(infile, outfile):& & image = cvLoadImage(infile);& & if image:& & faces = detectObjects(image)& & im = Image.open(infile)& & if faces:& & draw = ImageDraw.Draw(im)& & for f in faces:& & draw.rectangle(f, utline=(255, 0, 255))& & im.save(outfile, "JPEG", quality=100)& & else:& & print "Error: cannot detect faces on %s" % infile& & if __name__ == "__main__":& & process('input.jpg', 'output.jpg')& & 您可能感兴趣的文章:Python urllib模块urlopen()与urlretrieve()详解一个检测OpenSSL心脏出血漏洞的Python脚本分享python基础教程之popen函数操作其它程序的输入和输出示例Python urlopen 使用小示例Python open读写文件实现脚本从零学python系列之从文件读取和保存数据& & QQ空间
百度搜藏更多& & Tags:python OpenCV& & 复制链接收藏本文打印本文关闭本文返回首页& & 上一篇:在python的WEB框架Flask中使用多个配置文件的解决方法& & 下一篇:windows下wxPython开发环境安装与配置方法& & 相关文章Pyramid添加Middleware的方法实例Python中for循环详解pycharm 使用心得(三)Hello world!Python备份Mysql脚本pycharm 使用心得(一)安装和首次使用浅析python 内置字符串处理函数的使用方法python 基础学习第二弹 类属性和实例属性python 字符串split的用法分享使用Python的Supervisor进行进程监控以及自动启动python抓取网页时字符集转换问题处理方案分享& & 文章评论& & 最 近 更 新& & Python的一些用法分享Python抓取Discuz!用户名脚本代码Python的ORM框架SQLObject入门实例基于python的汉字转GBK码实现代码Python collections模块实例讲解Python生成随机数的方法python Django模板的使用方法(图文)python 文件与目录操作Python设计模式之观察者模式实例用python实现的可以拷贝或剪切一个文件列& & 热 点 排 行& & Python入门教程 超详细1小时学会python 中文乱码问题深入分析比较详细Python正则表达式操作指Python字符串的encode与decode研Python open读写文件实现脚本Python enumerate遍历数组示例应Python 深入理解yieldPython+Django在windows下的开发python 文件和路径操作函数小结python 字符串split的用法分享
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益收藏成功!
添加标签来管理你的收藏
选择标签:
删除提示:
删除收藏标签,该标签下的内容将自动移至未加标签收藏中,确认要删除该标签吗?
确定要取消收藏吗?
关注成功!
关注精选邮箱:
尚未设置接收邮箱
取消关注后,将无法收到该知识库相关的知识动态和关注周报哦!确定要取消本知识库的关注吗?&&/&&&&/&&
大四暑假的时候,帮老师指导了一个本科大学生创新实验,主要目标是通过图像处理相关技术对人脸美丽度进行分类。其中一个很重要的环节就是人脸的性别识别,这里将这个部分单独拿出来,借住OpenCv这个开源的图像处理库,在MFC框架下编写了一个人脸性别识别的程序,本套教程将详细介绍编写过程。
需要提前说的一点是这个程序是在大四的时候编写的,当时自己还没有正式的进行图像处理方面的研究,编程经验也不够丰富,因此程序只用了OpenCv提供的较为经典的人脸检测和人脸识别算法,在准确度、程序设计、异常机制处理上可能显得不够完善。
在制作这套教程之前我并没有刻意去完善它,一是想好好审视下自己两年前的编程水平,二是保持程序的简洁性,使广大读者更容易看懂。教程编写完成后,我会再花些时间来完善自己当年这个处女作。
一. 程序效果演示
首先给出程序的最终效果:
从图中可以看出程序一共分为如下几个模块:方法选择、误差补偿及初始化模块;视频性别识别模块;图像性别识别模块;辅助功能;图片显示区域;结果显示区域。
二. 功能介绍
1) 方法选择、误差补偿及初始化模块
这里一共有三个控件:初始化按钮,方法选择复选框,误差补偿值。初始化按钮与初始化事件相关联,主要是加载相关分类器(会在后面教程中详细介绍),这里的分类器主要包含一个人脸检测分类器以及三个性别识别分类器。单击初始化按钮,初始化完成后程序会给出对应提示:
注意如果用户在尚未进行初始化的情况下进行其他操作,程序会弹出对话框提示用户先进行初始化:
紧接着是方法选择列表,这里面提供了四种人脸性别识别的方法供用户选择,分别是PCA变换、Fisher变换、LBP变换、支持向量机:
然后是误差补偿模块,用来补偿程序存在的一些固定误差,主要用在视频性别识别中,会在以后的教程中详细介绍。这里同样以一个列表控件的形式供用户选择:
2) 视频性别识别模块
这个模块主要实现视频信号的性别识别,默认由摄像头采集视频。主要包含两个按钮,一个是开始按钮&打开视频&,另一个是暂停按钮。功能很简单,单击&打开视频&按钮,程序会自动检测当前设备上所安装的摄像头,并调用指定摄像头采集视屏,同时对视频进行人脸检测、性别识别,在图片显示区域显示实时的人脸检测结果,在结果显示区域显示性别识别结果。
这里注意的是模块中的暂停按钮具有复用功能。因为这个程序具有两个功能,对摄像头视频进行性别识别以及对单张图片进行性别识别。当程序在处理视频是,这个按钮的功能是暂停/恢复当前视频;在对单张图片进行性别识别时,这个按钮的功能是自动读取文件夹下的下一张图片。在视频处理时按钮的状态为:
在识别单张图片时按钮的状态为:
3) 单张图像性别识别模块
这里同样包含两个按钮,一个&图片文件夹&按钮(这个按钮同样具有复用功能),一个静态文本框区域,注意着两个控件是相互关联的。在对图片进行性别识别时,程序提供了两个工作模式:
模式一:选定一个文件夹,通过视频性别识别模块中的&下一张&按钮自动加载文件夹下所有图片,无需重复选择。
模式二:直接选择一个图片文件进行操作。
程序初始默认为模式一,即文件夹模式。此时单击模块中的&图像文件夹&按钮,将会弹出对话框,提示我们选择一个文件夹:
我们在&双击此处转换模式&的静态文本框区域双击鼠标,将会切换到模式二:
此时按钮的文本变为&图片文件&,单击会打开一个对话框要求用户具体选择一张图片来进行处理:
注意这里两个模式下所弹出的文件对话框是不同的。再次双击可切换回原来的模式。
4) 辅助功能模块
这部分模块中主要包含三个按钮:人脸批量分割、文件名修改、方法验证。
这些都是我在编写程序的过程中用到的一些辅助性功能。单击&人脸批量分割&按钮,会弹出一个文件选择对话框,提示用户选择一个文件夹,然后程序会自动检测文件夹下的所有图片文件,对其进行人脸检测,并将检测到的人脸区域图片批量保存到程序制定路径下。
同样,如果单击&文件名修改&按钮,同样会弹出一个对话框,提示用户选择文件夹,然后程序会对所有图片的名称按照指定格式进行统一修改,并保存。至于&方法验证&按钮,是一个测试按钮,主要是在开发程序的过程中用作调试按钮。
5) 图片显示区域和结果显示区域
主要由一个picture控件和三个编辑框组成,用来显示当前的图像信息以及识别结果。其中&男/女识别率&这两个控件是用来在仿真试验中测试识别方法的效果的,将会在后续章节进行详细介绍。
本篇教程主要介绍了程序的最终效果,让大家对本教程的最终目的有一个大致的了解。最后再次强调,这个程序是我本科阶段编写的,肯定会有很多不足之处,在处理图像时也用的都是经典算法。如果你希望从教程中了解人脸检测、人脸识别等方面最前沿的算法,那这篇教程可能会让你失望。但如果你希望了解MFC的入门级编程方法、图像处理的基本知识以及OpenCv的基本应用,相信你能从这套教程中学到一些东西。
推荐文章 TOP10

我要回帖

更多关于 opencv 训练 人脸 的文章

 

随机推荐