安瑞范文网

基于人脸识别的考勤系统的设计与实现

|来源:网友投稿

王维 杨路

摘  要:针对传统考勤系统考勤效率低下等问题,开发了人脸识别考勤系统。该系统使用Linux操作系统,选用Qt Creator 4.3.0开发平台,使用SQLite记录后台数据库相关信息,基于OpenCV,实现了人脸识别、用户基本信息管理、人脸识别打卡、查询考勤记录等功能。经测试,该系统正常运行,较好地完成了考勤工作。

关键词:人脸识别;OpenCV;考勤系统;Qt Creator

中图分类号:TP391.41     文献标识码:A

Design and Implementation of Attendance System based on Face Recognition

WANG Wei, YANG Lu

(College of Computer Science, Xianyang Normal University, Xianyang 712000, China)

wangw850@126.com; 1913205489@qq.com

Abstract:
Aiming at low attendance efficiency of traditional attendance systems, this paper proposes to develop a face recognition attendance system. The system adopts the Linux operating system and Qt Creator 4.3.0 development platform, and uses SQLite to record background database related information. Based on the OpenCV library, it realizes functions such as face recognition, user basic information management, face recognition clock-in, and attendance record query. Test results show that the proposed system works normally and the attendance work is well completed.

Keywords:
face recognition; OpenCV; attendance system; Qt Creator

1   引言(Introduction)

当前考勤管理系统应用十分广泛,主要借助RFID技术、指纹识别技术及人脸识别技术等识别方式。RFID考勤签到是利用RFID自动识别技术、红外对射,及后台管理软件集成的一种考勤签到方案,但该技术不能保证证件与持卡人的绝对统一,识别精度较低[1-2]。指纹识别技术通过采集指纹,保存特征码到指纹数据库,进行身份识别时,通过特征匹配算法将采集到的指纹和指纹数据库中的指纹进行匹配,从而进行身份的验证[3]。但指纹数据被盗后,会造成信息的丢失[4]。而人脸识别技术能够有效地避免以上问题,同时识别精度较高,安全性也较高。因此,人脸识别技术成为考勤系统最为合适的选择。

人脸识别技术是以生物特征为基础,借助计算机技术,通过对人脸的特征进行分析与确认,实现对不同人脸的精确识别。人脸识别技术包含三个步骤,即人脸图像采集、人脸检测及人脸识别。人脸图像采集是借助摄像头采集人脸的图像,比如静态图像、动态图像,不同位置、不同表情等方面的图像;人脸检测主要用于人脸识别的预处理,即在图像中准确定位人脸的位置和大小,主流的人脸检测算法是采用Adaboost学习算法;人脸识别是将检测到的人脸与已存的人脸库中的人脸进行对比,得出两者的相似度值[5-6]。

2   系统总体设计(Overall system design)

整个系統使用Linux操作系统,基于Qt Creator 4.3.0开发平台,选用SQLite数据库管理系统,使用OpenCV完成开发工作。其中,OpenCV为开源且跨平台的计算机视觉和机器学习软件库,由C语言和少量的C++语言实现,属于轻量级并且运行效率较高的软件库,能够运行在Windows、Linux等操作系统上,可移植性好。OpenCV向上层提供大量的函数接口,不仅包括C++接口,同时也有Java、Python、C#等许多语言接口,主要功能是实现计算机对图像数据的处理,以及计算机视觉方面的相关算法,在物体识别、图像分割、人脸识别等领域应用广泛[7]。

人脸识别考勤系统的设计与实现的总体功能模块如图1所示。

用户系统功能详细介绍如下:

(1)实时显示时间:在用户界面实时显示当前的时间,用户可以看到当前打卡的时间是否迟到。

(2)显示公告信息:根据时间滚动查询公告信息表中的内容,将公告的内容和时间显示在界面中。

(3)人脸识别打卡:通过采集用户的人脸图像信息打卡成功,并且在考勤信息表中添加用户的考勤信息。

(4)查询考勤记录:用户可以通过工号查询自己的考勤记录,使得考勤信息透明化。

管理员系统功能详细介绍如下:

(1)管理员注册:管理员注册时需要添加自己的基本信息,也要采集面部信息才能完成注册。

(2)管理员登录:管理员通过账号和人脸识别进入系统,如果两者任意一个与数据库的内容不匹配将登录失败。

(3)用户信息管理:系统管理员可以对用户基本信息进行录入和面部图像信息采集以及查询、删除用户信息。

(4)公告信息管理:管理员可以发布、删除或者修改自己权限内所管理的通知内容。

(5)考勤信息统计:当用户打卡成功后,管理员登录管理员系统进入考勤信息模块,该模块将会展示所有用户的考勤状态,并且以饼状图和数字的形式显示考勤信息。

(6)管理员信息管理:管理员分为普通管理员和超级管理员,将管理员的权限划分等级,不同的权限处理不同的事务。

3   系统具体实现(System implementation)

3.1   用户信息管理模块算法设计

该模块是在menu.ui界面完成主要工作。信息录入,主要录入姓名、工号、性别等信息。录入好用户信息后点击addbt按钮触发on_addbt_clicked()槽函数,该函数使用insert into语句将用户的基本信息插入用户信息表中。点击select按钮触发on_selectbt_clicked()槽函数,完成对用户信息的查询功能。采集人脸信息时点击openbt按钮,触发on_openbt_clicked()槽函数,完成打开摄像头并截取十张人脸图像信息,并进行处理。点击“开始训练”按钮触发on_starttrainbt_clicked()槽函数,在函数中启动线程完成对采集信息的训练。

用户信息添加流程图如图2所示。

3.2   人脸识别打卡模块算法设计

人脸识别打卡模块先采集人脸照片训练人脸模型,然后进行人脸检测,实现打卡功能,具体算法如下:

(1)准备人脸数据集:

通过摄像头采集不同的人脸照片,对照片进行处理,将处理好的照片全部放到指定文件夹中存储。人脸检测模型由OpenCV官方提供,但面部信息识别模型需要自己训练。

图像采集部分负责采集图像,将来自外部设备的图像转换成可处理的数字图像格式。选用Z301P芯片的USB摄像头,驱动程序采用Linux下常用的通用驱动spca5xx。Linux通过读写设备文件的方式访问和控制USB摄像头,使用统一程序设计接口V4L(Video4Linux)实现视频图像的采集[8]。

(2)数据标记好后,使用OpenCV提供的相关训练模型接口进行模型的训练:

Ptrmodel=createEigenFaceRecognizer();

Model->train(images,labels);//将采集的图片路径和标签传参,训练人脸模型。

Model->save("MyFaceFisherModel.xml");//训练模型是xml文件,将文件保存起来。

(3)训练好文件后进行人脸检测。通过摄像头打卡进行人脸信息的采集,框出人脸的位置:

CascadeClassifier cascade;

cascade.load("haarcascade_frontalface_alt.xml");//加载人脸检测的模型。

cascade.detectMultiScale(gray,faces,

1.1,2,0,CV_HAAR_SCALE_IMAGE,Size(30,30));//检测人脸的方法

(4)将检测到的人脸信息进行识别:

Ptrmodel=createEigenFaceRecognizer();

modelPCA->load("MyFaceFisherModel.xml");//加载刚才训练好的人脸模型

predict=model->predict(image);//返回预测的标签

(5)人脸识别后用户信息插入功能:

如果五次预测的标签相同,说明识别正确。当识别出正确人脸信息之后使用select语句查询SQLite数据库中考勤信息表的用户信息。如果用户信息可以查询到已经打卡则调用QMessageBox::about(this,"提示",message);显示已经打卡,如果用户信息查询不到信息则调用QMessageBox::about(this,"提示",message)显示打卡成功,并且将打卡信息使用insert into语句插入考勤信息表中。

人脸识别打卡模块流程图如图3所示。

4   系统测试(System testing)

系统经过测试,能够正常运行。其中,用户信息管理模块实现了普通管理员对自己所管理用户的个人基本信息进行录入,同时实现了对用户面部图像信息的采集和识别模型的训练。单击“打开摄像头”按钮,摄像头获取图像信息,并且输出到屏幕;单击“采集头像”按钮,通过摄像头截取十张人脸图片信息,放入指定文件夹;选择训练生成的文件和训练文件,单击“开始训练”,在指定文件夹下生成训练好的模型。用户信息管理模块测试运行界面图如图4所示。

用户人脸识别打卡模块的主要功能是打开摄像头采集用户面部图像信息,与之前训练好的模型进行对比,对比成功则将用户基本信息插入考勤信息表中并显示打卡成功。用户人脸识别打卡模块测试运行界面图如图5所示。

5   结论(Conclusion)

该系统基于Linux操作系统,使用Qt Creator 4.3.0开发平台进行开发,使用OpenCV当中的人脸识别相关接口实现人脸识别打卡模块,使用SQLite数据库存储和统计系统需要的所有信息。系统能够正常工作,界面交互性好,操作简单,而且具有一定的可移植性,能够完成公司或者学校考勤工作的基本业务流程,更有效地完成了考勤工作,提高了管理者的工作效率。

参考文献(References)

[1] 张智文.射频识别技术理论与实践[M].北京:中国科学技术出版社,2008:286-305.

[2] 代懋玥.基于Web和RFID技术的人事考勤管理系统的设计与实现[D].成都:电子科技大学,2019.

[3] 刘晓莉,刘晓静.基于指纹识别技术的考务管理系统[J].办公自动化,2021(04):61-62.

[4] 季善东.指纹识别技术与考勤系统应用研究[D].南京:南京邮电大学,2017.

[5] 梁文莉.基于獨立成分分析的人脸识别算法研究[D].西安:西安科技大学,2012.

[6] 朱伟.OpenCV图像处理编程实例[M].北京:电子工业出版社,2016:3-19.

[7] LI Y, LI Y H, LI H R. Face check in system based on OpenCV[J]. International Core Journal of Engineering, 2021, 7(4):274-278.

[8] 周锦阳,吴哲,宋广.基于嵌入式Linux的视频通信系统设计与实现[J].船舶电子工程,2019,39(10):101-105.

作者简介:

王  维(1981-),女,硕士,讲师.研究领域:智能信息处理,嵌入式系统.

杨   路(1996-),男,本科生.研究领域:软件开发.

猜你喜欢 人脸识别 人脸识别的“国标”来了文萃报·周五版(2021年17期)2021-05-31中科视拓开放商业版本人脸识别算法中国计算机报(2020年13期)2020-04-26人脸识别好用但不能滥用作文周刊(中考版)(2020年32期)2020-01-22荣耀畅玩7C:人脸识别通信产业报(2018年10期)2018-04-13iPhoneX来了!小康(2017年28期)2017-10-13“人脸识别”人工智能测谎仪研发成功发明与创新·大科技(2016年1期)2016-02-01
热门推荐
  • 思政教学实施方案5篇

    思政教学实施方案5篇思政教学实施方案  一总体要求和工作目标深入学习贯彻习近平总书记系列重要讲话精神全面落实省委从严治党决定和两个意见及严守政治纪律严明政治规矩加强领导班子

  • 商业电影中场景设计的

    [摘要]场景作为电影中三大构成要素之一,是电影创作中不可或缺的重要元素,优秀的场景设计在影片中不但能

  • 基于英语学科大观念的

    陈芳蒋京丽摘  要:英语学科大观念是指向学科本体的语言大观念和具有跨学科特点的主题大观念的融合统一。

  • 高校食育课程“教学做

    宋尚新王蓉蓉王晶祝长青[摘要]高校开展食育对于提升大学生综合素质具有重要意义。教育家陶行知先生的教育

  • 高中数学“大单元教学

    罗紫红摘要:2021年9月广西全面铺开新课改,依据高中数学课程标准的教学建议,课堂的教学目标制定要突

  • 水平三“投掷项目”单

    陈宇王兴发摘要:投掷项目是小学阶段主要学习内容之一,不同水平阶段有不同的教学目标要求,其中单元教学设

  • “互联网+教育”背景下

    卢剑忧[摘      要] 目前,利用网络教学平台进行教学已经成为不可逆转的趋势。基于205份样本,

  • 机场航站楼供配电系统

    摘要:本文结合某国际机场航站楼的供配电设计,从航站楼供配电系统规模的确定、负荷计算、无功补偿和谐波治