基于OpenCV的人脸识别门禁系统设计

2022-06-26 19:17周琛博
科教创新与实践 2022年7期
关键词:门禁系统人脸识别

周琛博

摘要:随着人工智能技术的发展与应用,人脸识别逐步应用到智能安防领域,不仅能够有效提高考勤的工作效率,还能够提高整体形象。本次课程设计结合了人工智能、机器识别、机器学习、模型理论、视频图像处理多种专业技术,在Linux系统上开发设计了基于OpenCV视觉库的人脸识别门禁系统。此次课程设计首先将摄像头捕捉的人脸信息进行灰度化、降维及计算特征值等处理,利用了PCA特征提取人脸识别算法进行人脸数据训练与测试,之后得到了模型对应的相关的用户信息,再使用Qt搭建操作界面,形成智能门禁系统的UI界面和识别,最终实现了人脸的捕捉采集与比对检测,最终实现了基本精确和及时的人脸识别。

关键词:Linux;门禁系统;人脸识别;OpenCV;Qt

一、系统总体设计

为了更加便捷的对摄像头和对摄像头所捕获的数据进行实时的处理,我们采用了我们自身笔记本的自带摄像头进行了操作。通过图像处理技术,我们对摄像头的画面进行了实时的检测,如果人脸出现在摄像头中,数据算法便会快速识别特征信息,然后对图像进行人脸比对,如果为数据库中已有的用户,系统则会显示相关信息,并允许通过。系统主要分为以下几个模块:人脸数据采集、人脸数据训练与测试、实时人脸检测以及人脸识别等。

人脸数据检测主要是通过摄像头来拍摄和采集人脸,然后将所获得的图片和数据发送给Haar特征分类器,然后Haar特征分类器将照片中的面部信息进行提取处理,并将所获得人脸、眼睛以及嘴唇得特征值保存在xml文件中。

人脸数据训练与测试主要是将所得到得人脸图片进行灰度化、直方图均值化,使用PCA算法进行人脸数据训练,然后利用较少得得数据特征对样本进行描述以达到数据特征值降维得目的。

实施人脸检测和人脸识别则是将摄像头中得数据进行实时处理和对比,并显示人脸识别后得对应得结果。

二、系统软件设计

系统软件设计主要分为人脸图像数据采集和人脸识别两大块内容,分别进行图像预处理和特征提取,最终形成人脸特征数据库,与获取到的实时人脸图像进行比对,最终显示比对结果。

1.人脸数据采集与处理

(1)数据采集

首先,我们创建一个用户对象,即对象姓名,在用户键入对象姓名之后,检测摄像头是否打卡,如果打开异常,则在用户操作界面显示“摄像头没有画面,请检查摄像头是否异常”得字样;如果摄像头正常打开,则进行拍照。

之后系统会自行判断当前得储存路径是否存在,如果不存在则创建temp文件夹得路径,将我们所拍摄的样本照片保存在该路径下(为了确保系统建模和人脸识别得精确性,所以样本照片最好十张以上),因为Opencv使用得是BGR,Qt使用是RGB,所以我们还需要进行颜色空间转换,颜色转换之后,我们便可以获得一个基本得比对样本。

(2)数据处理

保存用户信息到usr.txt文件中,并向文件中添加一行信息“源文件行数+姓名;usr.txt”。之后统计系统录入的人脸类型个数信息,然后再创建编号文件夹,存放不同人的面部信息,方便后期训练模型使用。人脸检测截取。

然后使用OpenCV的CascadeClassifier定义人脸分类器,对从摄像头获得的图像进行实时检测,并且把结果显示在屏幕上。OpenCV中提取人脸信息使用的是 detectMultiScale函数检测出图片中的人脸,并将检测好的人脸信息放到vector容器中,即把检测到的信息放到另外一个序列中,函数由分类器对象调用。

之后我们需要对图像进行灰度化。即将图像由彩色转换为黑白色——将每个像素点的RGB值统一成同一个值。灰度化后的图像将由三通道变为单通道,单通道的数据处理起来就会简单许多。

2.人脸数据训练

读取之前我们所储存得csv文件。将csv文件中获取得到的人脸图片信息存储到容器images中,编号存储到容器labels中。然后调用OpenCV中的PCA算法,对人脸数据进行训练,得到的结果保存到xml文件中。

3.实时人脸检测

在label中实时显示摄像头捕获的图像。定义VideoCapture类的对象capeture,然后一帧一帧的读取摄像头捕获的画面,并把图片存入到Mat序列中,再转换成QImage类型后在label中显示,但是此時我们只能设置静态图片,所以我们还需要 设计一个定时,即设置静止时间小于人眼暂留时间,本次课程设计设置得静止时间为40ms,利用槽函数,定时时间到了之后显示图片,致使其形成视频流。

4.人脸识别

首先我们需要加载Haar特征分类器。将所获得得图片的RGB转BGR格式,变换后进行直方图均衡化处理,利用OpenCV中的 detectMultiScale函数去检测出图片中的人脸,并框选出label显示的人脸。

之后便是实时得人脸识别。在系统中实时捕捉人脸信息,将所捕获得数据和训练模型进行比较。将拍摄得到的测试人脸序列face_test和训练好的模型model进行比较,如果和之前提取到的大小不一致则重置。然后调用predict函数进行比对,返回值是测试数据的标签值,通过标签在usr.txt找用户名,最终得到该测试人员的姓名并显示。

三、系统界面设计

在Qt中的ui做系统的人机交互界面,包括用户姓名输入框、识别结果显示框、控制按钮(拍照、开始取样、模型训练、关闭、样本获取、清除数据)。可根据需求选择各个控件的属性样式,为系统设计一个美观的交互界面。

四、系统调试与分析

在Qt中完成代码编写以及设置界面后,点击编译运行,首先要点击样本获取控制按钮,进行新用户采样。用户输入姓名,点击拍照,至少拍十张以保证识别结果的精确度,然后点击开始取样控制按钮,对摄像头拍摄得到的图像进行人脸检测截取、灰度化、直方图均衡化,取样成功会弹出一个对话框提示csv文件创建完成。用户取样成功后,会自行创建一个新路径命名为TEMP文件夹和用户编号文件夹,其中,TEMP文件夹用于保存摄像头拍摄得到的图片,用户编号文件夹用于保存处理后的图片。

五、总结

本文提到的人脸识别过程是通过调用摄像头进行拍照,进行人脸图像采集,而后进行图像预处理、图像特征提取以及匹配与识别,达到人脸识别的目的,在图像识别方面具有重要的实用价值与研究意义。

参考文献:

[1]刘翠响,肖伶俐.基于视频的人脸检测综述[J.电子设计工程,2011,19(14):172-174.

[2]洪洋.基于人脸识别技术的门禁系统及其嵌入式实现[D].大连海事大学,2012.

[3]郑铁.基于多分类器的人脸识别算法的研究与实现[D].东北大学,2008.

猜你喜欢
门禁系统人脸识别
人脸识别的“国标”来了
一个简易的校园智能门禁系统的设计
关于门禁系统在地铁综合监控系统中的运用分析
基于地铁BAS系统建设门禁系统的方案思路分析
中科视拓开放商业版本人脸识别算法
基于门禁系统在地铁综合监控系统中的实践分析
荣耀畅玩7C:人脸识别
“人脸识别”人工智能测谎仪研发成功