《基于 OpenCV的人脸识别系统》

合集下载

基于OpenCV的人脸识别技术实现

基于OpenCV的人脸识别技术实现

基于OpenCV的人脸识别技术实现近年来,随着人工智能的发展,人脸识别技术逐渐成为热门领域。

作为一种高级的计算机视觉技术,在很多领域都得到了广泛的应用,比如安防、金融、教育等等。

在这些领域中,人脸识别的应用不仅可以提高效率,还可以提升安全性,同时也能够降低人类的工作负担。

OpenCV是一种开源计算机视觉库,它提供了很多常用的图像处理和计算机视觉算法,比如图像滤波、特征提取、目标跟踪等等。

在OpenCV中,人脸识别也是一种常用的功能,通常采用人脸检测和人脸识别两个步骤来实现。

首先,在人脸识别的过程中,人脸检测是必不可少的一步。

OpenCV提供的基于Haar特征的人脸检测算法可以帮助我们快速准确地检测到图像中的人脸。

这个算法基于一系列的Haar特征来分析图像中的人脸区域,首先会构建一个分类器,然后使用这个分类器来检测每一个图像区域是否为人脸。

最终,我们可以得到一个矩形框,将其框住的区域即为人脸。

其次,在人脸检测完成之后,就可以进行人脸识别的工作了。

OpenCV提供的人脸识别功能通常基于机器学习算法,比如基于主成分分析(PCA)、线性判别分析(LDA)或支持向量机(SVM)的算法。

其中,PCA算法是最常用的一种算法,它可以将高维的人脸数据降低到低维空间中,并将其转换为一组特征向量。

然后,我们可以将这些特征向量作为训练数据,建立一个分类器。

当新的人脸图像输入时,我们可以将其转化为相同的特征向量,并通过分类器输出该图像所属的人物。

总的来说,基于OpenCV的人脸识别技术具有以下优点:1. 准确度高:OpenCV提供的人脸检测算法和人脸识别算法都可以实现高精度的人脸识别效果。

2. 稳定性强:OpenCV的人脸检测和人脸识别功能在不同环境下都可以保持稳定性和鲁棒性。

3. 易于使用:OpenCV的人脸识别算法使用方便,可以快速实现人脸识别功能。

4. 开放源代码:OpenCV是开源的计算机视觉库,因此可以为研究者和开发者提供更大的自由,促进技术的发展和创新。

基于opencv和dlib的人脸识别智能考勤系统毕业论文

基于opencv和dlib的人脸识别智能考勤系统毕业论文

基于opencv和dlib的人脸识别智能考勤系统毕业论文引言智能考勤系统在现代管理中起到了重要的作用。

传统的考勤方式存在诸多问题,如易伪造、低效率等。

人脸识别技术作为一种高效准确的生物特征识别技术,被广泛应用于智能考勤系统中,为解决传统考勤方式的问题提供了新的解决方案。

本文将基于opencv和dlib开源库,研究并设计一种基于人脸识别的智能考勤系统。

通过分析人脸特征,建立人脸识别模型,并结合考勤系统的需求,实现对员工的自动识别和考勤管理。

该系统将提高考勤的准确性和效率,减少传统考勤方式所带来的问题。

在本论文中,我们将介绍智能考勤系统的背景和意义,探讨人脸识别在智能考勤中的应用价值。

通过研究和实践,我们希望为智能考勤系统的开发和应用提供有益的参考。

论文结构本论文将分为以下几个部分:引言:介绍智能考勤系统的背景和意义,以及人脸识别在智能考勤中的应用价值。

相关技术综述:综述人脸识别技术和智能考勤系统的相关技术,包括opencv和dlib的基本原理和应用。

智能考勤系统设计:详细介绍基于___和dlib的人脸识别智能考勤系统的设计思路和实现方法。

实验与结果分析:通过实验验证系统的性能和准确性,并对结果进行详细分析和讨论。

总结和展望:总结本论文的研究工作,对智能考勤系统的发展趋势和未来工作进行展望。

通过以上结构的论述,旨在全面介绍基于___和dlib的人脸识别智能考勤系统的设计与应用,为相关研究和实践提供有益的参考。

本章将介绍OpenCV和dlib的基本原理和功能,以及它们在人脸识别领域的应用。

OpenCV(开放源代码计算机视觉库)OpenCV是一种开源的计算机视觉库,它提供了一系列用于处理图像和视频的函数和算法。

OpenCV可以在多个平台上运行,并支持多种编程语言。

在人脸识别中,OpenCV提供了丰富的功能和方法。

它可以用于检测人脸、识别人脸特征、比较人脸相似度等。

OpenCV使用了各种机器研究和图像处理技术,使其成为人脸识别领域的重要工具之一。

基于QT和OpenCV的人脸识别系统.doc

基于QT和OpenCV的人脸识别系统.doc

基于QT和OpenCV的人脸识别系统The Face Recognition System Based on QT and OpenCVby sununs11关键词:ARM,QT,OpenCV,人脸识别,PCA1 系统方案设计1.1 引言人脸是一个常见而复杂的视觉模式,人脸所反映的视觉信息在人与人的交流和交往中有着重要的作用和意义,对人脸进行处理和分析在视频监控、出入口控制、视频会议以及人机交互等领域都有着广泛的应用前景,因此是模式识别和计算机视觉领域持续的研究热点。

本系统在 FriendlyARM Tiny6410 开发板基础上,利用 OpenCV 计算机视觉库和 QT 图形库,通过普通的 USB 摄像头实现了自动人脸识别,准确率较高,方便易用。

1.2 系统总体架构“人脸识别”大致可分为两个阶段:1. 人脸检测搜索一幅图像,寻找一切人脸区域(此处以绿色矩形显示),然后进行图像处理,清理脸部图像以便于更好地识别。

2. 人脸识别把上一阶段检测处理得到的人脸图像与数据库中的已知人脸进行比对,判定人脸对应的人是谁(此处以白色文本显示)。

1.3 工作流程系统运行时,自动从 USB 摄像头获取 YUV 格式的图片,转换成QImage 格式并实时显示在LCD屏上,再将其转换成IplImage 格式,利用OpenCV 的Haar Cascade Face Detector(也称为Viola-Jones 方法)进行人脸检测,得到一个矩形区域,截取该矩形区域图像进行直方图均衡化处理,进行训练或识别。

系统训练流程:点击触摸屏上的按钮获取一帧图片,由训练者判断是否加入训练集。

当训练集图片足够后,点击训练按钮,即使用 PCA 方法处理训练集中的人脸图片,生成 XML 文件。

系统识别流程:点击触摸屏上的按钮,进入识别状态。

得到上述的人脸区域图像后,读取XML 文件,使用PCA 方法将图像与数据库比对,若可信度超过阈值,则在屏幕上显示出人名。

基于OPENCV的人脸识别

基于OPENCV的人脸识别
2)读入待检测图像。读入图片或者视频
3)检测人脸
3.人脸预处理:在一个人脸识别系统中,应用多种预处理技术对将要识 别的图片进行标准化处理是极其重要的。多数人脸识别算法对光照 条件十分敏感,所以假如在暗室训练,在明亮的房间就可能不会被 识别出来等等。这个问题可归于“lumination dependent”,并且还 有其它很多例子,比如脸部也应当在图片的一个十分固定的位置 (比如眼睛位置为相同的像素坐标),固定的大小,旋转角度,头 发和装饰,表情(笑,怒等),光照方向(向左或向上等),这就 是在进行人脸识别前,使用好的图片预处理过滤器。
• [6]
• [7]
• [8] \OpenCV\apps\HaarTraining\doc\haartraining.doc
• [9]
• [10]
lily2.jpg
lily3.jpg
lily4.jpg 它告诉这个程序,第一个人的名字叫“joke,而joke有四张预处理后 的脸部图像,第二个人的名字叫”lily”,有她的四张图片。这个程 序可以使用”loadFaceImgArray()”函数把这些图片加载到一个图片 数组中。 为了从这些加载好的图片中创建一个数据库,你可以使用OpenCV 的”cvCalcEigenObjects()”和”cvEigenDecomposite()”函数。
6.识别过程: 1)读取用于测试的图片。 2)平均人脸,特征脸和特征值(比率)使用函数 “loadTrainingData()” 从人脸识别数据库文件(the face recognition database fil)“facedata.xml”载入。 3)使用OpenCV的函数“cvEigenDecomposite()”,每张输入的图 片都被投影到PCA子空间,来观察哪些特征脸的比率最适合于代表 这张图片。 4)现在有了特征值(特征脸图片的比率)代表这张输入图片,程序 需要查找原始的训练图片,找出拥有最相似比率的图片。这些用数 学的方法在“findNearestNeighbor()”函数中执行,采用的是“欧几 里得距离(Euclidean Distance)”。

基于OpenCV的人脸识别系统

基于OpenCV的人脸识别系统

基于OpenCV的人脸识别系统廖春萍;陈雪芳;杨德顺;方武宏【摘要】OpenCV作为开源图像处理算法库,也可应用于人脸识别领域.将采集的人脸图片运用高斯平滑、灰度变换等算法进行图像预处理;再采用OpenCV的Haar-like特征匹配法描述算子进行特征匹配,获取人脸特征值;最后利用归一化平方差匹配方法,比对人脸数据库后完成特定人脸的识别.【期刊名称】《东莞理工学院学报》【年(卷),期】2017(024)003【总页数】6页(P33-38)【关键词】人脸识别;OpenCV;图像处理;Haar-like【作者】廖春萍;陈雪芳;杨德顺;方武宏【作者单位】东莞理工学院电子工程与智能化学院,广东东莞523808;东莞理工学院电子工程与智能化学院,广东东莞523808;东莞理工学院电子工程与智能化学院,广东东莞523808;东莞理工学院电子工程与智能化学院,广东东莞523808【正文语种】中文【中图分类】TP23人脸识别技术是新兴的生物识别技术,主要用在智能机器人、智能家居、以及军事安防等方面,在国内,对人脸检测技术的研究始于20世纪90年代,人脸识别系统的难点主要是人脸作为生物特征的特点所产生的识别问题[1],如人脸结构的相似性,不同的观察角度产生的人脸易变性,此外,遮盖物、用户配合度等因素也导致人脸识别困难加大,为此,基于OpenCV的人脸识别系统,提出了对采集的图像使用多算法逐级处理,然后基于OpenCV丰富的资源库进行人脸识别。

1.1 OpenCV技术OpenCV是一个开源图像处理算法库,基于C/C++编程。

OpenCV库的优点在于:跨平台,独立于操作系统、硬件和图形管理器;无论非商业或商业应用,OpenCV 均免费;速度快、使用方便;可扩展性好,包括底层和高层的应用开发包;通用的图像/视频载入、保存和获取模块[2]。

在OpenCV的基础上加入图像预处理的算法,构成了基于OpenCV的人脸识别系统。

基于OpenCV的人脸检测系统设计与实现毕业设计说明书

基于OpenCV的人脸检测系统设计与实现毕业设计说明书

毕业设计说明书基于OpenCV的人脸检测系统设计与实现毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日基于OpenCV的人脸检测系统设计与实现摘要目前,人脸检测定位和跟踪已经成为计算机视觉与模式识别领域非常活跃的研究课题之一,在身份验证、信息安全、电子商务、基于内容的图像与视频检索、视频监控、智能人机交互、可视通信、虚拟现实、公安档案管理等很多方面都有着重要的应用价值。

基于OpenCV的人脸识别算法及应用

基于OpenCV的人脸识别算法及应用随着科技的不断进步和发展,人工智能技术逐渐成为了各行各业中的不可或缺的一部分。

其中,人脸识别技术是人工智能领域中的一个非常重要的分支,这种技术可以通过计算机视觉和图像处理技术来自动检测、识别和识别人脸图像。

在人脸识别领域中,OpenCV(开源计算机视觉库)是一个非常流行的实时图像处理框架,其高效且易于使用的API以及强大的计算机视觉功能,使它成为了开发人员们的首选之一。

本文将介绍基于OpenCV的人脸识别算法及应用,并探讨相关技术和研究进展。

1. 人脸识别技术人脸识别技术是指可以识别并识别人脸特征的一种算法。

这种技术包括两个基本步骤:人脸特征提取和人脸辨识。

1.1 人脸特征提取人脸特征提取是将人脸图像中的主要信息提取出来的一种过程。

常用的方法包括颜色直方图、Gabor波特征、LBP(本地二值模式)特征、SIFT(尺度不变特征转换)特征等。

其中,颜色直方图是一种常用的方法,可以通过颜色空间中的像素信息量来提取人脸特征。

1.2 人脸辨识人脸辨识是将人脸图像与已知的人脸图像库进行比较和匹配的一种过程。

其过程包括人脸检测、特征提取以及分类器的训练和识别等。

常用的方法包括K近邻、支持向量机(SVM)和神经网络等。

2. OpenCVOpenCV是一种广泛使用的计算机视觉库,该库包含许多常用的图像处理和计算机视觉功能。

OpenCV提供了一系列的API和函数,提供高效的图像处理和计算机视觉功能,这使得人们可以轻松地使用它来开发各种图像处理和视觉计算应用。

2.1 OpenCV中的人脸识别在OpenCV中实现人脸识别包括人脸检测、特征提取以及人脸识别分类器的训练和识别等。

其中,最常用的方法是使用Haar级联算法进行人脸检测,然后使用LBPH算法进行人脸识别。

2.2 Haar级联算法Haar级联算法是一种流行的人脸检测算法,其原理是通过多个层级的分类器来识别人脸图像中的特征。

该算法的优点是速度快,准确性高。

基于OpenCV的人脸识别技术研究与应用

基于OpenCV的人脸识别技术研究与应用人脸识别技术是近年来备受关注的热门领域之一,随着人工智能和计算机视觉技术的不断发展,人脸识别技术在各个领域都有着广泛的应用。

OpenCV作为一个开源的计算机视觉库,提供了丰富的图像处理和分析工具,被广泛应用于人脸识别技术的研究和开发中。

本文将重点探讨基于OpenCV的人脸识别技术的研究现状和应用前景。

一、人脸识别技术概述人脸识别技术是一种通过对图像或视频中的人脸进行检测、识别和验证的技术。

它主要包括人脸检测、人脸特征提取、人脸匹配等步骤。

在过去的几十年里,人脸识别技术取得了长足的进步,从最初的基于几何特征的方法到如今基于深度学习的方法,其准确率和鲁棒性得到了显著提升。

二、OpenCV简介OpenCV是一个跨平台的计算机视觉库,提供了丰富的图像处理和分析工具,包括图像处理、特征检测、目标跟踪等功能。

OpenCV支持多种编程语言,如C++、Python等,使得开发者可以方便地使用其功能进行图像处理和分析。

三、基于OpenCV的人脸检测在人脸识别技术中,首先需要进行人脸检测,即从图像或视频中准确地定位出人脸所在位置。

OpenCV提供了多种人脸检测算法,如Haar级联检测器、HOG特征检测器等。

这些算法可以帮助我们快速准确地检测出图像中的人脸区域。

四、基于OpenCV的人脸特征提取在进行人脸识别时,需要从检测到的人脸图像中提取出有效的特征信息。

OpenCV提供了多种特征提取算法,如LBPH(Local Binary Patterns Histograms)算法、Eigenfaces算法、Fisherfaces算法等。

这些算法可以帮助我们从人脸图像中提取出具有区分性的特征信息。

五、基于OpenCV的人脸匹配在提取出有效的人脸特征后,需要进行人脸匹配来识别出输入图像中的人脸与数据库中已知人脸之间的对应关系。

OpenCV提供了多种匹配算法,如KNN(K-Nearest Neighbors)算法、SVM(Support Vector Machine)算法等。

基于C和OpenCV的人脸识别系统的设计与实现


2、修复漏洞:及时修复系统运行过程中出现的漏洞和异常,确保系统稳定 可靠。
3、优化性能:根据系统运行情况优化算法和代码性能,提高系统效率。
4、用户反馈:积极收集用户反馈,不断改进系统功能和服务质量。
六、总结
本次演示设计和实现了一种基于C和OpenCV的人脸识别系统,并对其进行了 全面测试和维护。通过该系统的设计和实现,我们深刻认识到人脸识别技术在身 份认证方面的优势和价值。然而,作为一种复杂的计算机视觉技术,人脸识别技 术还存在诸多挑战和提升空间。
3、代码实现:根据设计思路,开始编写代码。首先配置开发环境,然后实 现人脸检测、预处理、特征提取及比对等功能模块。代码实现过程中应考虑代码 可读性、可维护性和可扩展性等因素。
四、系统测试
1、测试方案:搭建测试环境,准备测试数据,设定测试指标,对系统的各 项功能进行全面测试。
2、测试内容:主要包括准确性、实时性、稳定性和鲁棒性等方面的测试。
二、需求分析
为了设计和实现一个高效、稳定的人脸识别系统,我们需要分析并满足以下 需求:
1、功能需求:系统需具备实时性、准确性和稳定性,能够实时检测到人脸 并对其进行识别。
2、性能需求:系统应具有高精度、高效率和高可靠性,能在不同的环境和 光照条件下工作。
3、软硬件环境需求:需要具备开发环境、图像处理库(如OpenCV)、编译 工具等。
谢谢观看
在未来的研究中,我们将进一步探索更高效、稳定和鲁棒性更强的算法和技 术,以提升人脸识别系统的性能和应用范围。我们也将深度学习等新型技术在人 脸识别领域的最新进展和应用,并将其引入到系统中以优化性能。总之,基于C 和OpenCV的人脸识别系统的设计与实现在实际应用中取得了良好的效果,具有广 泛的应用前景和研究价值。

基于opencv和pillow实现人脸识别系统(附demo)

基于opencv和pillow实现⼈脸识别系统(附demo)⽬录⼀。

⼈脸检测和数据收集⼆.训练识别器三.⼈脸识别和显⽰本⽂不涉及分类器、训练识别器等算法原理,仅包含对其应⽤(未来我也会写⾃⼰对机器学习算法原理的⼀些观点和了解)⾸先我们需要知道的是利⽤现有框架做⼀个⼈脸识别系统并不难,然后就开始我们的系统开发吧。

我们的系统主要分为三个部分,然后我还会提出对补获图⽚不能添加中⽂的解决⽅案。

我们需要完成的任务:1.⼈脸检测和数据收集2.训练识别器3.⼈脸识别和显⽰在读此篇⽂章之前我相信你已经做了python环境部署和opencv模块的下载安装⼯作,现在我们还需要的模块是pillow(树莓派默认带有此模块,但如果你⽤的是win系统可能还需要另外安装,在终端输⼊pip install pillow即可),和opencv-contrib模块,cv2的face模块包含在内(当然我的Linux系统的树莓派貌似仍然默认包含了此模块,所以如果你是⽤的pc可能需要另外下载),以及最基本的numpy模块。

在开始写代码之前我们⾸先需要在当前运⾏⽬录中添加两个⽂件夹,dataset⽤于存放捕获到的⼈脸图像,⽅便后⾯训练识别器,trainer⽂件夹则存放了训练结果⼀。

⼈脸检测和数据收集#数据采集cam = cv2.VideoCapture(0)#补获图⽚cam.set(3, 640) # set video widthcam.set(4, 480) # set video heightface_detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')#导⼊分类器# For each person, enter one numeric face idface_id = input('\n 输⼊⽤户id')print("\n 数据采集中,请正视摄像头轻微扭转")# Initialize individual sampling face countcount = 0while(True):ret, img = cam.read()#ret为是否成功读取,是⼀个布尔值gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#转化为灰度图faces = face_detector.detectMultiScale(gray, 1.3, 5,minSize=(100,100))for (x,y,w,h) in faces:#此处faces是⼀个array数组或空的元组,原因我后⾯会分析cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)count += 1# Save the captured image into the datasets foldercv2.imwrite("dataset/User." + str(face_id) + '.' + str(count) + ".jpg", gray[y:y+h,x:x+w])cv2.imshow('image', img)k = cv2.waitKey(100) & 0xff # Press 'ESC' for exiting videoif k == 27:breakelif count >= 10: # Take 10 face sample and stop videobreak# Do a bit of cleanupprint("\n [INFO] Exiting Program and cleanup stuff")cam.release()cv2.destroyAllWindows()在这⼀部分中我们完成了⼈脸的补获,并将其保存在了我们建⽴的dataset⽂件夹,并将每⼀个⼈的数据⽤特定的id表述,这样我们就能训练能识别不同⼈脸的识别器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安电子科技大学 人工智能学院暑期夏令营科研实践

《基于OpenCV的人脸识别系统》 实践报告

姓 名: XXX 学 校: XXXX 院系班级: XXXXXXXXX 联系方式: XXXX

需要完整工程的程序请联系本人!百度ID:雄风静谧。目录 1 项目背景 ................................................................................................. 1 2 项目目标 ................................................................................................. 1 3 项目方案 ................................................................................................. 2 3.1 人脸采集 ....................................................................................... 2 3.2 人脸训练 ....................................................................................... 3 3.3 人脸识别 ....................................................................................... 4 4 项目调试 ................................................................................................. 6 4.1 采集调试 ....................................................................................... 6 4.2 训练调试 ....................................................................................... 6 4.3 识别调试 ....................................................................................... 7 5 实践总结 ............................................................................................... 8

需要完整工程的程序请联系本人!百度ID:雄风静谧。1

1 项目背景 如何创造一个安全的、数字现代化的、智能化的宿舍门禁系统有着十分重要的意义。然而,在日常管理中我们经常会碰到这样的问题:外来人员混入宿舍带来的安全隐患、夏天未带校园卡而在公寓楼前苦等、宿舍出入口必须有人盯守、晚归被困公寓楼外等等。 在当今计算机普及与急剧增长的状况下,应该实施一些高效率的系统,不仅省钱,省事,而且便捷,针对以上情况,十分有必要建立一个全面、高效、人性化、智能的高校宿舍出入管理系统。 因此,做一个人脸识别系统就非常地有必要! 2 项目目标 本项目拟完成人脸采集、人脸训练和人脸检测与识别的功能。 人脸采集程序主要完成以下功能: 1. 建立新的文件夹:用户根据提示输入自己姓名的简称,程序会在工程目录下建立该用户的文件夹,用以存放拍摄的照片; 2. 打开摄像头和写入图像:调用笔记本摄像头,当P键按下时,显示当前帧的图像,经处理后,保存图像;当q键按下时,立即退出采集程序 3. 人脸检测与裁剪:在当前帧识别出人脸后将其裁剪至ORL人脸数据库大小即92x112。 人脸训练程序主要完成以下功能: 1. CSV文件读取:CSV文件对应的图像数据和对应的标签; 2. 样本训练:包括ORL人脸数据库的样本和自己的样本。 人脸训练样本取自ORL人脸数据库,共40个人,每人10张照片。照片在不同时间、不同表情(睁眼闭眼、笑或者不笑)、不同人脸细节(戴眼镜或者不戴眼镜)下采集,所有的图像都在一个黑暗均匀的背景下采集的,正面竖直人脸(有些有轻微旋转)。此外,增加自己的样本,并以相同尺寸拍摄20张左右图像。 人脸识别与检测程序主要完成以下功能: 1. 人脸检测:识别出当前帧是否有人脸; 2. 人脸预测:根据训练结果判断当前帧中人脸是否属于样本集; 3. 姓名显示:若属于样本集则显示姓名缩写,否则,显示“0”。

需要完整工程的程序请联系本人!百度ID:雄风静谧。2

3 项目方案 本项目一共分为三个步骤,故程序共有三个,分别是:人脸采集程序、人脸训练程序和人脸检测与识别程序。 3.1 人脸采集 人脸采集程序包含三个模块:建立文件夹模块、打开摄像头和写入图像模块、人脸检测与裁剪模块。图1是人脸采集程序的流程图。

开始

成功载入分类器

输入名字简称用户是否存在

截取摄像头当前帧检测人脸尺寸修改

检测按键

YNYN

退出 p q 其他

图1 人脸采集程序流程图 建立文件夹模块:采用mkdir()函数为每位用户提供单独文件夹保存拍摄的

需要完整工程的程序请联系本人!百度ID:雄风静谧。3

照片,不允许有重复文件夹,若名字相同,只能删除原文件夹或者更改名字简称。 打开摄像头和写入图像模块:拍摄照片时调用笔记本电脑摄像头,使用OpenCV的VideoCapture类,即可打开摄像头,使用imwrite()函数即可写图像。 人脸检测与裁剪模块:检测并分割出人脸,并改变图像法的大小与下载的数据图片大小一致。人脸采集使用OpenCV内部描述脸部Haar特征的分类器:haarcascade_frontalface_default。而人脸检测使用detectMultiScale函数,该函数原型为: void detectMultiScale ( const Mat& image, CV_OUT vector& objects, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size() ); 参数1:image--待检测图片,一般为灰度图像加快检测速度; 参数2:objects--被检测物体的矩形框向量组; 参数3:scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%; 参数4: minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个);如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除;如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框;这种设定值一般用在用户自定义对检测结果的组合程序上; 参数5: flags--要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,因此这些区域通常不会是人脸所在区域; 参数6、7:minSize和maxSize用来限制得到的目标区域的范围。

3.2 人脸训练

人脸训练程序包含三个模块:创建CSV文件模块、读取CSV文件和人脸训练模块。 创建CSV文件模块:CSV文件采用Python3 编写,使用opencv教程里提供的自动生成csv文件的脚本。包含图片的路径和标签。 读取CSV文件模块:stringstream最大的特点就是可以实现各种数据类型的转换,不需要像C语言那样麻烦,而且非常安全;getline()把从输入流读入的字

需要完整工程的程序请联系本人!百度ID:雄风静谧。4

符串存放入新字符串中。其函数原型是: istream& getline ( istream &is , string &str , char delim ); 其中:istream &is表示一个输入流,譬如cin; string&str表示把从输入流读入的字符串存放在这个字符串中; char delim表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为'\n',(遇到回车停止读入)。 脸训练模块:采用face.hpp头文件里的LBPHFaceRecognizer类,继承自FaceRecognizer。创建分类器、样本训练和保存训练结果的程序如下: Ptr model = createLBPHFaceRecognizer(); model->train(images, labels); model->save("MyFaceLBPHModel.xml"); 图2是人脸训练程序流程图。此外,程序会对样本数量过少和样本尺寸不一致报错。

开始

读取CSV文件载入分分类器

载入样本和标签样本训练结束 图2 人脸训练程序流程图 3.3 人脸识别

人脸识别程序包含两个模块:人脸检测模块和人脸预测模块,其中人脸检测

需要完整工程的程序请联系本人!百度ID:雄风静谧。

相关文档
最新文档