资源描述:
《基于opencv的人脸识别程序-代码.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第8卷第3期2009年8月淮阴师范学院学报(自然科学版)JOURNALOFHUAIYINTEACHERSCOLLEGE(NATURALSCIENCEEDITION)Vol18No13Aug.2009基于OpenCV的人脸检测算法研究齐金山(淮阴师范学院计算机科学与技术学院,江苏淮安223300)摘要:介绍了一种开放源代码的计算机视觉类库OpenCv,阐述了该软件的特点及结构,并对其在VisualC++2005开发环境下的配置作了详细的说明.然后提出了一个基于OpenCv的人脸检测算法.实验结果表明,该算法具有识别效果、实时性好,检测速度快的特点
2、.关键词:OpenCV;人脸检测;IpIImage中图分类号:TP391.41文献标识码:A文章编号:167126876(2009)03202162050引言人脸的检测是一类具有很大挑战性的问题[1],其主要难点在于:人脸是一类高度非刚性的目标,存在相貌、表情、肤色等差异;人脸上可能会存在一些附属物如眼镜、胡须等;人脸的姿态变化万化,并且可能存在遮挡物;待检测图像性质的差异,比如:待检图像的分辨率、摄录器材的质量等.针对以上难点,各国的科研人员作了很多的研究,每年在国际国内的相关期刊和会议上都有大量的关于人脸检测的论文,如Chellappa、Zha
3、o等人分别于1995和2003年发表的两篇人脸识别的综述论文[2,3].人脸检测的算法也很多,Boosting算法[4]是其中的一种,但Boosting算法十分复杂.本文提出了基于OpenCV进行人脸检测将比较容易实现,实验结果表明该算法具有识别效果好、实时性好、检测速度快的特点.1OpenCv简介OpenCV(OpenSourceComputerVisionLibrary)是指Intel计算机视觉库[5].它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法.OpenCV主要用于对图像进行一些高级处理,比如说特征检测与
4、跟踪、运动分析、目标分割与识别以及3D重建等.由于OpenCv的源代码是完全开放的,而且源代码的编写简洁而高效,特别是其中大部分的函数都已经通过汇编最优化,以使之能高效而充分地利用英特尔系列处理芯片的设计体系,对于PentiumMMX、Pentium、PentiumHI及Pentium4这些处理器而言,OpenCv的代码执行效率是非常高的,所以近年来在国外的图像处理相关领域中被广泛地使用,成为一种流行的图像处理软件.111OpenCv的特点相对于MATLAB等其它常用的图像处理软件来说,OpenCv有其显著的不可比拟的优点,主要体现在如下几个方面:
5、1)OpenCv是一个包含了超过300个C函数的应用编程接口,它不依赖于外部库,既可以独立运行,也可在运行时使用其它外部库.2)高性能:OpenCv中所有的算法都是基于封装于IPL的具有很高灵活性的动态数据结构,而且其中有一半以上的函数在设计及汇编时被Intel公司针对其所生产的处理器优化.3)提供了一些与诸如EiC、Ch、MATLAB等其它语言或环境的接口,这些接口在其安装完之后位于安装目录opener/interfaces下.4)开放性:不管对于商业的还是非商业的用途,OpenCv都是完全免费的,其源代码完全开放,开发收稿日期:20092052
6、22作者简介:齐金山(19772),男,湖南株洲人,讲师,硕士,研究方向为数字图像处理.第3期齐金山:基于OpenCV的人脸检测算法研究217者可以对源代码进行修改,将自己设计的新类添加到库中,只要设计符合规范,自己的代码也可以被别人广泛使用.当然OpenCv的优点并不止这些,使用OpenCv对开发者来说帮助最大的是:由于OpenCv的源代码完全开放,所以程序开发者可以仔细地阅读很多关键算法的源代码来理解图像处理中很多算法的原理及整个实现过程,这对于一个程序开发者来说是非常重要的.112OpenCv的数据类型以及常用函数OpenCv包含基础的数据
7、类型和帮助数据类型,基础的数据类型主要包括:图像类的IpIImage,矩阵类的CvMat,可变集合类的CvSeq、CvSet、CvGraph以及用于多维柱状图的混合类CvHistogram等.帮助数据类型主要包括:用于表示二维点坐标的CvPoint,用于表示图像宽和高的CvSize,用于表示叠代过程结束条件的CvTermCriteria,用于表示图像转换内核的IpIConvKernel和用于表示空间力矩的CvMoments等.在此仅介绍算法中用到的图像类IpIImage[6].OpenCv库使用“IpIImagc”结构体来创建和处理图像,使用此种格
8、式的优点是可以比DIB格式表示更多的图像性质,而且可以很方便地存取图像中的像素值.IpIImagestructure定义如