基于opencv的人脸检测界面开发
《基于opencv的人脸检测界面开发》由会员分享,可在线阅读,更多相关《基于opencv的人脸检测界面开发(31页珍藏版)》请在装配图网上搜索。
本科毕业论文(设计)(2015 届)基于 opencv 的人脸检测界面开发院 系 电子信息工程学院 专 业 通信工程 年 4 月II摘 要人脸检测(Face Detection)是一种在任意数字图像中找到人脸的位置和大小的计算机技术。它可以检测出面部特征,并忽略诸如建筑物、身体和其他任何东西。人脸检测技术不仅仅是人脸跟踪、人脸识别、表情识别等技术的重要条件,同时在人机交互、模式识别、视频检索、智能监控等领域也引起了广泛的重视。在通过对人脸检测相关知识进行学习的基础上,本文首先对国内外的人脸检测发展进行了相关分析,阐述了本课题的研究背景及意义;第二章介绍基于 Opencv 实现人脸检测的相关方法和检测原理;第三章指出了基于 QT 平台,人脸检测界面如何开发,需要用到的相关技术知识和操作流程。第四章设计了基于 opencv 的人脸检测程序,采用了 QT开发工具并结合 opencv 技术对程序界面进行设计实现。关键词:人脸检测;QT开发;Opencv;IIIIIAbstractFace detection is a computer technology that identifies human faces in digital images. It can detect facial features and ignore something like buildings,bodies and any other things.Face detection technology is not just an important condition for face recognition, also attracting wide attention in the human-computer interaction, pattern recognition, video retrieval, intelligent monitoring and other fields.Firstly in this paper, through the study of relevant technology of face detection recognition, and face detection to identify relevant experience in the domestic and abroad are analyzed,indicating the background and the significance of the topic.Based on opencv,the second chapter introduces how to realize the design.Then the third chapter points out how to develop face detections interface based on the QT platform; The fourth chapter based on opencv face detection procedures, using opencv, the QT development tools,achieve the design.Key Words:Face detection; QT development; Opencv;IIIIV目 录摘 要 .IAbstractII目 录 .III1 绪论 .11.1 课题背景及意义 11.1.1 课题的背景 .11.1.2 课题的意义 .11.2 人脸检测的发展现状 .11.2.1 国内外现状 .11.2.2 研究难点 21.3 本文安排 21.4 本章小结 22 Opencv 与人脸检测 32.1 人脸检测的方法 32.1.1 几何特征法 .32.1.2 特征脸法 32.1.3 弹性图匹配法 52.1.4 神经网络法 .52.2 Opencv 的应用领域 .52.3 Opencv 的基本结构 .62.4 Opencv 检测原理 .62.5 本章小结 63 QT 平台人脸检测界面的开发 73.1 QT 的简介 .73.2 QT 平台的搭建 83.2.1 构建 QT 应用程序的流程 83.2.2 编译 QT 应用程序的方法 .103.3 开发 QT 程序的基本流程 .113.4 本章小结 .13IIIV4 人脸检测的实现 144.1 通过 Cmake 编译 Opencv144.2 配置 Qt Creator 的 Opencv 开发环境 .164.3 人脸检测的实验过程 .174.4 本章小结 .205 总结与展望 21参考文献 22附录 人脸检测源程序 .23V11 绪论1.1 课题背景及意义1.1.1 课题的背景人脸检测早期的时候是用来检测人脸中特征点之间的距离、比例等参数作为特征数据参数,建立具备半自动化的人脸检测程式。而早期检测有两个主要研究:基于几何绘制任何脸型之间的距离和角度,以及一些容貌上,眼角、嘴角、鼻尖和部位构成平面拓扑;其次,模板方法模式和利用电脑图像细微的相关性来实现检测功能。在 1993 年 Berto 对两类方法进行对分分析后发现,模板匹配法和几何特征方法中前者较为优秀 1。对人脸的特征提取与识别可看成是一个 3D 物体的 2D 投影图像进行匹配。而人脸实际是个非刚性模型,在不同情况下可能存在一定的弹性形变,如表情、姿势位创造变化与模型检测问题相似。环境因素对提取某种特征识别和有效的。例如,在不同照明条件下的个人特征也可能发生一些变化。因此在个人特征提取和识别图像识别前将进行某些预处理(标准化)。删除背景,服装及冗余无用甚至有干扰到位置和校准目标灰度可以提高脸部检测效率,面部检测准确率得以提升。1.1.2 课题的意义研究人脸检测在理论和技术上都有重要的意义:一是可以推进对人类视觉系统的认识;二是需要满足人工智能的应用。使用面部检测技术,建立人脸自动检测系统,利用计算机实现自动检测人脸图像具有广泛的应用领域。与其他作为标志识别的方法(如指纹,虹膜,和检测等)相比具有以下优点 2:不显眼,图像采集接口需要检测没有身体接触的人,你不能打扰检测人类;成本低,安装方便,只需使用面部识别系统内置的摄像头,摄像设备可以是普通摄像头,数码相机和手机,对用户没有特殊安装要求;无需人工干预,整个识别过程不要求用户主动参,计算机可以自动通过预先用户设置。由于具有以上优点,近几年来,人脸识别技术引起了越来越多科研人员的关注。1.2 人脸检测的发展现状1.2.1 国内外现状随着图像处理、生物特征、模式识别和各种分类算法等技术的发展而逐步的完善,为我们的生活和工作带来各种各样的便利和安全。近年来,反国内和国际恐怖主义,国家安全和社会稳定的需求,世界各国都加大了对安全,生物验证和识别领域的重视。美国军方研究机构建立人脸检测算法 FERET 评估标准,统一各种人脸检测和识别标准 3。国内在人脸自动识别技术研究相对起步较晚,开始于上世纪 90 年代末。有国家自然科学基金会、863 计划,还有许多当地的大学,研究机构和 IT 企业都建立了人脸检测研究小组。主要研究机构有:上海交通大学、西北大学、西安交通大学、同济大学、复旦大学、南京理工大学、南京大学、北京工业大学、武汉大学、华中科技大学、微软亚洲研2究院、上海银晨智能识别科技有限公司等 4。他们在人脸检测、与特征抽取和人脸检测算法等做了大量有意义的工作,也积累了丰富的经验。我国在此领域的研究和相关系统的开发正进一步跻身世界先进行列。1.2.2 研究难点人脸检测是一个复杂的具有挑战性的模式检测问题,其主要的难点有两方面,一方面是由于人脸内在的变化所引起:人脸具有相当复杂的细节变化,不同的外貌如脸形、肤色等,不同的面目特征如眼、嘴的张闭等;人脸有无遮挡遮挡,如眼镜、头发以及其它外部物体等。另外由于外在条件变化所引起:由于成像角度的不同造成人脸的多姿态,如平面内旋转、深度旋转以及上下旋转,其中深度旋转影响较大;光照的影响,如图像中的亮度、对比度的变化和阴影等。图像的成像条件,如摄像设备的焦距、成像距离,图像获得的途径等等 5。1.3 本文安排本文一共有五个章节。第一章为绪论介绍课题背景及意义,并对人脸检测的发展现状进行分析。第二章介绍 Opencv 与人脸检测内容。第三章介绍 QT 平台人脸检测界面的开发需要用到的相关技术。第四章介绍人脸检测的实现。第五章是总结与展望。1.4 本文小结本章是绪论,主要内容包括课题研究背景及意义以及人脸检测的发展现状。32 Opencv 与人脸检测2.1 人脸检测的方法高精度的检测工作一般需要复杂的处理过程,如将图象映射到表面,恢复为三维模型,进行模型匹配等,但基于二维的图象处理也可进行人脸检测,下面介绍常用的几种方法。2.1.1 几何特征法很多人采用几何特征法。例如:一些常见的几何特征,例如人脸形状的局部特性有眼睛,鼻子,嘴等,并在该面的分布函数的面部特征有几何特性。基于检测这些几何特征,鉴定特征向量之间的对应关系,通过欧几里得距离的识别是最常用的方法。眼睛,鼻子,嘴,下巴,不同之处是由于各种形状、尺寸和这些组件的结构,所以通过对形状和结构之间的几何描述,可以作为检测的重要特征。几何特征通常通过提取人眼,口,鼻和其它重要的特征点的位置作为分类功能的重要器官 6。基于少量的存储器几何特征的检测方法也有一些问题:提取物防抖更为困难;改变可能剧烈;导致一些信息丢失,适合于粗略的分类。一种方法是处理一组独立的小模型,如眼睛,嘴巴,鼻子,眉毛和下巴。这些模型必须用于获得每个特征的轮廓,而基于边缘检测的传统方法很难获得一个连续的上边缘。为此,提取特征弹性的方法有其独特的优势。在灵活识别设计特征的形状的基础上,可调节的参数。为了找到这组参数,需要使用图像的边缘,先用来设计一个高峰,山谷的形状及强度的信息和能量。当能量达到最小,这组对应的最适合的形状模型的形状特征参数调节能量减小。其基本思路是:设计一个可调节的部件模型(即变形模型,如图 2-1 所示) ,能量通过调整模型参数定义,使得能量函数最小化,然后将模型参数作为一个实体的几何特性 7。Rxbbac图2-1可变形模板方法的眼模型2.1.2 特征脸法这种方法的原理是 LDA(Principal Component Analysis 主分量分析法)用于特征选择和降低图象维数,是一种通用方法。因此可以用 K-L 变换获取其正交 K-L 基底,对应其中较大特征值的基底具有与人脸相似的形状,因此,又称之为特征脸,得到人脸重要特征之后,要对其进行主成份分析,其具体的算法思想如下 8:4若抽样参加训练的人脸图像有 M 张,每张图像的维数是 N*N,则可以分别表示为:x1、x2、x3、x M ,那么平均脸可以表示为:(2-1)1/(12)iFx、每张人脸和平均人脸的距离可以表示为:(2-2)iidF假设矩阵A=d1,d2,d2,d M,特征脸需要做的就是找出矩阵 AA T的前Z个较大特征值中的特征向量,但AA T是一个N 2*N2维的大矩阵,求这个矩阵的特征值的计算量是很大的。为此我们可以先求出 AA T的特征值与特征向量,然后求出u i(2-3)1/2(0,1)ijUAnzuj表示AA T的特征向量,u j表示A TA的特征向量,n i是A TA的特征值,u j就是所指的特征脸。求出特征脸以后,所剩下的工作就是要对库中的人脸进行降维,由u j可以组成一个投影矩阵,表示为W=u1u2,,u Z-1,并进行降维:(2-4)(0,12,)TiiqWdN由上式得出所有人脸向量的降维向量。基于特征脸的识别方法的优点:大大降低了原始空间的维数,在这个低维空间中可进行人脸检测和识别。Pentland 等人在人脸检测中使用了特征脸方法,得到的特征脸如图2-2 所示:2-2 特征脸法缺点:这种方法对光条件变化更敏感。如果是光照条件变化,投影矩阵保留的主要元素变化。因此,在该投影矩阵的点不能非常小。随着技术提高,面部特征可能是标准线性费舍尔( Fisher 线性判别,简写 FLD )应用于人脸识别。三者相比得出的结论是,除去不在该区域和分类变化的作用,它们将被同等对待。FLD 改正 LDA 缺点,可作为分类类别中的矩阵分布。标准线性分析并不一定总比 LDA 更好。当样本量较少时, LDA 比 FLD 更好。在许多领域,特别是在人脸识别领域,人们并不知道不同类别的基本分布情况。他们的实验表明,这种考虑是正确的,在一些实验中,FLD 比 LDA 和 FLD 效果更好,而在其他测试中5FLD 比 LDA 更好 9。2.1.3 弹性图匹配法弹性图匹配法(Elastic Graph Matching)是一种基于动态链接结构(Dynamic Link Architecture,DLA)的方法。在两维空间中来制造人类面部属性拓扑,将拓扑置于预先,每个节点包含一个特征向量,其中记录的人脸有关近距离符号几何节点,峰值信息的分布之间的拓扑关系是一个二维拓扑基于接口描述 10。利用该方法进行人脸识别时,可同时考虑节点特征向量匹配和相对几何位置匹配。在待识别人脸图像上扫描拓扑图结构并提取相应节点特征向量,把不同位置的拓扑图和库中人脸模式的拓扑图之间的距离作为相似性度量。此外,可用一个能量函数来评价待识别人脸图像向量场和库中已知人脸向量场间的匹配度,即最小能量函数时的匹配 。 该方法使得几何特征描述越来越充分,保留了人脸的拓扑结构和局部特征,通过局部节点调节和弹性图变形,以及局部特征的多级 Gabor 变换描述,使得该方法对光照、姿态变化等具有较好的适应性。该方法的主要缺点是计算量较大,必须对每个存储的人脸计算出模型图,占用很大存储空间。2.1.4 神经网络法基于神经网络的人脸检测方法,近年来较为活跃,研究已应用于人脸识别,表情分析和其他问题,并获得良好的效果。这类方法的人脸采用神经网络分类和能力的学习灰度级的特征进行了鉴定。通常需要考虑两个因素:选择图像输入参数;选择什么类型的神经网络。目前,有两种主要的策略输入中、 ,第一种特征向量提取作为输入向量,第二个是图像像素直接进入神经网络。这能有效地控制神经网络的基本尺寸,根据一组特征来选择样本方差的特性,但程度和所得的收敛速度慢 11。面部识别神经网络还有很多,比如反向传播(BP 反向传播的测试)BP 神经网络算法。该方法简单,有很强的学习能力,更小的计算量;科特雷尔和其他使用级联识别 BP 神经网络,人脸识别伤害较好的能力;基于神经网络的临山等人提出的(概率神经网络的结果,PDBNN)方法,做虚拟样品制备和反加强学习,以获得想要的结果的可能性,估计模块化架构,以加快学习网络的可能性。由于神经网络径向基函数( RBF 神经网络, RBF)具有良好的紧凑空间,平整等特点,已经用于人脸检测 12。神 经 网 络 方 法 进 行 人 脸 检 测 的 优 点 主 要 在 于 可 以 简 便 地 构 造 出 神 经网络系统作为分类器,使用人脸和非脸样本对该系统进行训练,让系统自动学习两类样本复杂的类条件密度,这样就避免了人为假设类条件密度函数所带来的问题。2.2 opencv 的应用领域大多数计算机科学家和程序员已经意识到计算机视觉的重要作用。但是很少有人知道计算机视觉的所有应用。例如,大多数人或多或少地知道计算机视觉可用在监控方面,也知道视觉被越来越多地用在网络图像和视频方面。少数人也了解计算机视觉在游戏界面方面的应用。但是很少有人了解大多数航空和街道地图图像(如 Google 的 Street View)也6大量使用计算机定标和图像拼接技术。一些人知道安全监控、无人飞行器或生物医学分析等方面的应用,但是很少人知道机器视觉是多么广泛地被用在工厂中:差不多所有的大规模制造的产品都在流水线上的某个环节上自动使用视觉检测 13。 Opencv 所有的开放源代码协议允许使用者使用 OpenCV 的全部代码或者 OpenCV 的部分代码生成商业产品。自从 Opencv 在 1999 年 1 月发布 alpha 版本开始,它就被广泛用在许多应用领域、产品和研究成果中。相关应用包括卫星地图和电子地图的拼接,扫描图像的对齐,医学图像去噪(消噪或滤波),图像中的物体分析,安全和入侵检测系统,自动监视和安全系统,制造业中的产品质量检测系统,摄像机标定,军事应用,无人飞行器,无人汽车和无人水下机器人 14。2.3 opencv 的基本结构Opencv 主体模块如图 2-1 所示。 Opencv 的 CV 模块包含了基本的图像处理功能和先进的计算机视觉算法,MLL 模块是机器学习库,包含统计分类器等几种工具,HIGHGUI 模块包含图像和视频输入/输出功能。CXCORE 包含 Opencv 的一些基本数据结构和相关函数15。图2-3 OpenCV主体中的四个模块2.4 opencv 检测原理OpenCV 中有检测人脸的函数(该函数还可以检测一些其他物体) , 甚至还包含一些预先训练好的物体检测文件。所以利用这些已有的东西就可以做出一个人脸检测的程序。主要步骤为:1.加载分类器。用 cvLoad 函数读入 xml 格式的文件。文件在 Opencv 安装目录下的“data/haarcascades/”路径下。2.读入待检测图像。读入图片或者视频。3.检测人脸。CV图像处理和视觉算法MLL统计分类器HIGHGUI图像和视频输入、输出CXCORE基本结构和算法、XML 支持、绘图函数72.5 本文小结本章重点介绍了人脸检测的方法以及 Opencv 相关技术知识。83 QT 平台人脸检测界面的开发3.1 QT 的简介Qt 是诺基亚开发的一个跨平台的 C+图形用户界面应用程序框架。它可以开发一个GUI 程序也可用于开发非 GUI 程序比如控制台工具和服务器。它提供了应用程序开发人员可以构建所需的最先进用于该局图形用户界面。 Qt 是完全面向对象的,易于扩展,并且允许真正的组件编程 12。基本上,Qt 和花片 X 窗口上,MFC Openwin,GTK 图形界面,如图书馆和 Windows 平台,OWC,VCL,ATL 是同一种东西,但 Qt 的有以下优点 16:(1)很好的跨平台特性Qt 支持下列操作系统:Microsoft Windows 95/98,Microsoft Windows NT,Linux,Solaris, SunOS,HP-UX,Digital UNIX(OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX, OS390,QNX 等等(2)面向对象Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。(3)丰富的 APIQt 包括多达 250 个以上 C+类,还提供基于模板的 collections,serialization, file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理功能。(4)大量的开发文档(5)XML 支持(6)Webkit 引擎的集成,可以实现本地界面与 Web 内容的无缝集成(7)用户自定义控件其他的工具包在应用时都存在一个普遍的问题,就是经常没有真正适合需求的控件,生成的自定义控件对用户来说,也是一个黑匣子。比如,在 Motif 手册中就讨论了用户自定义的控件的问题。而在 Qt 中,能够创建控件,具有绝对的优越性,生成自定义的控件非常简单,并且容易修改控件。(8)方便性由于 Qt 是一种跨平台的 GUI 工具包,所以,它对编程者隐藏了在处理不同窗口系统时的潜在问题。为了将基于 Qt 程序更加方便,Qt 包含了一系列类,该类能够使程序员避免了在文件处理、时间处理等方面存在依赖操作系统方面的细节问题。(9)国际化Qt 为本地化应用提供完全的支持,所有用户界面的文本或字符串都可以利用翻译工9具将其翻译成各国语言。(10)高性能的工具对于库来讲,它的有效性远超过应用性。为了提高 Qt 库的有效性、快捷性,对其进行了优化,Qt 能执行一些基本的任务,比如图形的润色,比一般的基于平台的代码要快。Qt 是基于 Xlib,而不依赖 Motif 工具包。(11)优越的绘画功能Qt 的绘画工具 Qpainter 类,在任意一个绘画设备上都可以润色图形。绘图设备包括组件、像素映射、图形文件和打印机,相同的代码可以用在 4 种不同类型的设备上。Qpainter 类支持复杂的同等系统的转换,很容易在所有平台上画旋转文本和像素映像。(12)绘制 2D/3D 图形功能Qt 提供了 QGLWidget 类,使用该类能够绘制 2D/3D 图形。用就像用一个 Qt 组件一样方便。这比纯粹的 OpenGL 做的 3D 图形更好使用。3.2 QT 平台的搭建3.2.1 构建 QT 应用程序的流程1,选择新建工程图3-1选择新建工程2 选择 Qt4 Gui Application 工程。(带 UI 界面编辑的工程)10图3-2选择Qt4 Gui Application工程3 取工程名例如: C_S_Socket。路径随意,不要有任何中文 Next图 3-3 取工程名4 默认即可,Next(这是为此次工程选择要添加的头文件。我们不需要其他的功能。默认)图 3-4 操作步骤5 Base class 选择 QDialog。Class name 改 MainDlg。 Next(我们是基于 Qt 界面编程的嘛。所以就选 QDialog Qt 窗口类噻)11图 3-5 基本信息填写6 Finish 完成(这里是编辑器告诉我们生成了如下文件)图3-6 完成操作界面3.2.2 编译 QT 应用程序的方法第一步,将应用程序和 Qt 库拷贝到同一目录。 (Windows 下库的搜索先从当前目录开始,然后是在系统 PATH 环境变量指定的路径查找。 )第二步,检查应用程序还依赖哪些 dll,如编译器带的 dll 或其他系统 dll。 参见应用程序的依赖关系一节。第三步,验证程序可以在目标系统上正确运行, 将目前包里的文件拷贝到目标系统上,尝试运行程序。第四步,发布插件程序。 插件和普通的动态库的发布不同, 不能简单的将之拷贝到应用目录里。应用程序在运行时会在其对应的 plugins 目录下去查找插件。 针对这个例子,发布包应该类似表 3-这样的结构:表 3-1 发布包结构12模块 文件名执行档 plugandpaint.exeBasic Tool插件 plugins/pnp_basictools.dllExtraFilters插件 plugins/pnp_extrafilters.dllQt Core 模块 plugandpaint.exe除了程序和 Qt 库,还有下面的编译器库:表 3-2 编译器库VC+ 6.0 VC+ 7.1 (2003) VC+ 8.0 (2005)C 运行库 msvcrt.dll msvcr71.dll msvcr80.dllC+运行库 msvcp60.dll msvcp71.dll msvcp80.dll插件的位置除了 Qt 默认的路径还可以通过代码里调用 Qt 的 API 来指定,相应的 API是 QApplication:addLibraryPath()或 QApplication:addLibraryPaths(). 如:qApp-addLibraryPath(”c:/some/path”);上述代码的推荐调用位置是在 main 函数中,QApplication 构造完毕之后。应用程序会在搜索默认路径之后去搜索你指定的库路径 14。3.3 开发 QT 程序的基本流程1 点击 maindlg.ui 进入主界面窗体设计成如下图 3-7 所示图3-7主窗体设计2 设置各个控件的对象名(不能同名,系统用对象名找到控件。命名规范方便自己识别) 服务器单选框:radioButton_Server客户端单选框:radioButton_Client13IP 地址框:lineEdit_Address用户名框:lineEdit_Name离开按钮:wayButton进入按钮:enterButton图3-8设置控件对象名3 创建一个窗体类,用于发送接收信息的窗体图3-9 创建窗体类修改类名 例如:chat,下一步完成14图 3-10 修改类名3.4 本章小结本章主要介绍 QT 平台上,人脸检测界面的开发需要用到的相关技术知识和操作流程方法等内容。154 人脸检测的实现4.1 通过 Cmake 编译 opencv1、通过 Cmake 编译 opencv下载所需工具QT5.4.0Qt creator 3.3.0Opencv2.4.5Cmake 2、安装软件3、将 C:QtQt5.4.0ToolsMinGWbin 加入系统的 Path 环境变量4. 打开 CMake,使用 CMake 编译 OpenCV。配置源码路径与生成的目标路径(1)源码路径:要选择 OpenCV 安装目录下含有如下文件的文件夹(2)目标路径:可以随意设置图 4-1 目标路径位置5.点击 Configure 配置按钮。选择 MinGW makefiles,点击 Finish 按钮,开始编译6.CMake 编译结束界面如下图 4-2 所示,勾选生成列表中的 WITH_OPENGL 和 WITH_QT两项16图 4-2 CMake 编译结束界面7. 再次点击 Configure 按钮,红色消失图 4-3 编译 Opencv 操作界面8. 打开 cmd,进入刚才设置的目标路径(C:OpenCV),输入 mingw32-make 命令开始编译17图 4-4 命令行截图 19. 执行 mingw32-make install图 4-5 命令行截图 24.2 配置 Qt Creator 的 opencv 开发环境1. 拷贝下面三个文件夹放在同一个文件夹下(1)OpenCV-2.4.5 安装目录下的 build/include 目录图 4-6 安装目录截图(2)CMake 目标路径下,MinGW 编译后的 bin 目录(3)CMake 目标路径下,MinGW 编译后的 lib 目录2.拷贝三个目录到同一目录后的结构如下图(我删除了原来的 CMake 目标目录中的其他目录,拷贝进来了 include 目录)18图 4-7opencv 目录截图3. 将 bin 目录添加到系统环境变量,至此 Qt Creator 下的 OpenCV 开发环境已经配置好4.3 人脸检测的实验过程本课题界面的开发在 windows7 旗舰版电脑上运行开发,电脑配置如下:处理器为Intel(R) Core(TM) i5-2450M CPU 2.50 GHz 2.50 GHz,安装内存为 4GB,是 32 位操作系统。该论文使用的程序为 Opencv2.4.5、QT5.4.0、QT creator3.3.0、cmake。打开 QT creator, 点击编辑进入界面中程序编辑部分首先在 Facedetection.pro 文件中加入 OpenCV 的库文件程序,如下图:图 4-8 Pro 文件截图继续编写源文件里的main.cpp:19图 4-9 main 文件截图程序编写完成后,点击界面文件,完成界面设计后,点击构建项目,界面内摄像头打开,标示出摄像头内的人脸,点击截图即可。20图 4-10 室内单人照实验结果及分析由于图 4-10 是室内单人照片,能够成功检测出人脸。下面再分别进行室内多人,室外多人照的检测。下面是室内多人照:图 4-11 室内多人照室外多人照:图 4-12 室外多人照从以上图片可以看出,室内和室外,对于人脸检测是有误差的。照片中人的数量也影响着检测的质量,人数越多,人脸检测的准确度越低。由于本实验只是在我电脑里进21行的实验仿真,因此若想具有普遍性,仍需做大量图片搜集以及多台不同设配电脑下同时做实验。4.4 本文小结本章详细介绍了 QT 平台下人脸检测系统的实现过程。22总结与展望本文主要介绍了人脸检测技术,对其进行分类,详细介绍了其中的关键技术和研究成果。然后综述了人脸检测技术国内外研究的现状、以及发展趋势,分析了存在的问题,提出了一些研究思路和技术方案,并设计出了基于 QT 平台的人脸检测系统的原型。最终利用摄像头连续获取图像,通过框图划分出人脸。人类对人脸检测的研究已经有 40 多年的时间,并取得了相当的成就,但距离实际可用行还有一定的距离,存在的问题也不少。从目前的研究成果来看,成功的人脸识别至少需要考虑以下几个方面:(1)人脸是具有一定可变形部分的三维固体的表面,目前仍存在争议的是在选用人脸模型时,是用二维表面还是三维模型基哪一个更好点。(2)由于外部干扰不可避免,预处理的效果将会影响到识别结果,好的人脸模型应能够在识别的同时,抑制分离外在干扰的影响。(3)对于表达人脸的各种特征需要进行比较和选择,以找出人脸最活跃的特征。这可以通过如下两种途径:一是比较同一个人的多张图片,以得到稳定的特征;另一种方法就是比较不同人的图片,以得出该人最“与众不同”之处。当然由于时间关系,本次设计还有不足之处。比如仅仅靠软件实现图像的采集速度比较慢,导致实时性不高;并且由于光照强弱问题,导致在采集的图像上检测人脸仍然有一定误差,可能会出现检测的并不是人脸。或者由于人脸上佩戴眼镜等物品而导致不能识别,这些都是需要改进的地方。23参考文献1 薛华成管理信息系统M,北京:清华大学出版社,19962 刘超,唐彬C+ Builder 案例开发集锦M,北京:电子工业出版社,19983 蒋宗礼,马涛,唐好魁,闫明霞等数据库技术及应用(第 2 版) M 电子工业出版社,2010:43654 庭宝等精通 C+ BuilderM,北京:电子工业出版社,19975 艾伦(Grant Allen),欧文斯(Mike Owens),杨谦,刘义宣. SQLite 权威指南(第 2 版)M,电子工业出版社,2012(01):25-65.6 李盛恩,王珊数据库基础与应用(第二版) M 北京:人民邮电出版社,2009:14787 曹岩,王海宇C+ Builder 应用程序开发实例应用于技巧(上基础篇)/21 世纪工程应用计算机技术丛书M,西安:西安交通大学出版社,19998 萨默菲尔德(Mark Summerfield),吴迪,戚彬,高波. Qt 高级编程M,电子工业出版社,2011(04):60-82.9 夏昕, 曹晓钢 , 唐勇. 深入浅出 HibernateM.电子工业出版社, 2005-6.10 史济民软件工程原理、方法与应用M,北京:高等教育出版社,200211 邓丽,孙凤栋数据库原理与应用M,沈阳:东北大学出版社,20073.12 王珊,萨师煊.数据库系统概论M.高等教育出版社,2006.5:198-235. 13 曹岩,王海宇C+ Builder 应用程序开发实例应用于技巧(下应用与提高篇)/21世纪工程应用计算机技术丛书M,西安:西安交通大学出版社,199914 邓丽,孙凤栋数据库原理与应用M,沈阳:东北大学出版社,20073.15 Abraham SilberschatzDATABASE SYSTEM CONCEPTS(Fourth Edition)M,北京:高等教育出版社,200216 施菊,张庆,赵冰 QT 开发平台的搭建与应用J制导与引信,2012 年 02 期本页为参考文献样版24附录 人脸检测源程序头文件QT += coreQT -= guiTARGET = FaceDetectionCONFIG += consoleCONFIG -= app_bundleTEMPLATE = appSOURCES += main.cppINCLUDEPATH += e:QT_OpenCV245includee:QT_OpenCV245includeopencve:QT_OpenCV245includeopencv2LIBS += e:QT_OpenCV245liblibopencv_calib3d245.dll.ae:QT_OpenCV245liblibopencv_contrib245.dll.ae:QT_OpenCV245liblibopencv_features2d245.dll.ae:QT_OpenCV245liblibopencv_flann245.dll.ae:QT_OpenCV245liblibopencv_gpu245.dll.ae:QT_OpenCV245liblibopencv_highgui245.dll.ae:QT_OpenCV245liblibopencv_imgproc245.dll.ae:QT_OpenCV245liblibopencv_legacy245.dll.ae:QT_OpenCV245liblibopencv_ml245.dll.ae:QT_OpenCV245liblibopencv_objdetect245.dll.a#LIBS += Le:opencvlib#INCLUDEPATH+=e:QT_OpenCV245include# e:QT_OpenCV245includeopencv# e:QT_OpenCV245includeopencv2#LIBS+=-LC:QT_OpenCV245liblibopencv_highgui245.dll.a# C:QT_OpenCV245liblibopencv_core245.dll.a# C:QT_OpenCV245liblibopencv_imgproc245.dll.a25源文件#include #include #include #include #include #include #include #include using namespace std;int main()cv:CascadeClassifier mFaceDetector;/载入四个人脸特征分类器文件,可以从 opencv 的安装目录中找到QString path;QDir dir;path = dir.currentPath();if( mFaceDetector.empty() )mFaceDetector.load( “haarcascade_frontalface_default.xml“ );if( mFaceDetector.empty() )cout“0“endl;cv:VideoCapture capture(0);/检查视频是否打开if(!capture.isOpened()return 1;cv:Mat frame; / 现在的视频帧cv:Mat mElabImage;/备份 frame 图像cv:namedWindow(“Extracted Frame“);/ 两帧之间的间隔时间bool stop = false;/ 循环播放所有的帧while (!stop) / 读下一帧if (!capture.read(frame)- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 opencv 检测 界面 开发
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文