本文章介绍由opnecv+qt实现的人脸识别考勤系统/门禁系统(ubuntu/arm),

是一个完整人脸识别系统,具有人脸录入、删除、人脸检测、识别、用管理等完整功能。

开发环境说明:虚拟机Ubuntu-18.04 + Opencv-4.2 + Qt-5.12.8 + Sqlite3数据库

所需工具:PC机、摄像头、开发板(可选)

所需第三方库:Opencv、Qt、Sqlite3

毕设课题选题参考:

毕业设计:电子信息/计算机专业毕业设计选题参考(嵌入式linux/单片机STM32/web/网络/图像)https://blog.csdn.net/qq_30155503/article/details/120339296https://blog.csdn.net/qq_30155503/article/details/120339296

帮助/答疑/辅导...等请联系博主,请点如下链接:

linux_face.txt · zengzr/share_contact - Gitee.com

系统运行人脸识别效果图:

 

系统主要功能实现介绍:

OPENCV库:用于人脸检测、人脸识别、人脸库训练等;

QT库:用于界面显示、包括摄像头图像显示、功能按钮等;

SQLITE库:数据库,存储用户信息、考勤数据等;

以下展示的为考勤系统,同时支持门禁系统,支持在PC端运行,也可ARM上运行。

在PC端运行,系统框架如下:

 在PC+ARM端运行,系统架构如下:

实现效果图:

识别成功画面: 

考勤表:

 ARM板运行:(未打开摄像头)

工程介绍:

框架:采用 “前台foreground_APP + 后台background_APP”的架构来实现,两个程序(进程)。

前台foreground_APP:界面显示、用户交互(录入、删除人脸等)等功能;

后台background_APP:数据/图像处理,包括人脸检测、识别、用户管理等;

前后台通信方式:网络套接字socket、私有协议;

工程源码目录:

目录/文件名称

说明

备注

foreground_app

前台应用程序工程目录

background_app

后台应用程序工程目录

common

公共模块目录

README.md

项目简要介绍/说明

系统涉及的图像格式有:

V4L2采集的JPEG/MJPEG、QT的QImage、OPENCV的cvMat。

三者之间各不相识,三者需相互转换才能被利用,转换过程如下:

人脸图像处理,分为两个阶段:人脸检测、人脸识别

人脸检测和人脸识别分别由两个的线程来处理,工作流程:

图像来源:由后台主动向前台获取图像,前台通过socket发送到后台。

后台获取的图像,先经过人脸检测线程进行检测,若检测到有图像,则传递给识别线程处理,不管有无检测到人脸,检测完一帧图像后,继续获取下一帧进行检测,这样循环。

人脸检测线程:opencv_face_detect_thread()

由opencv_face_detect()检测到人脸后,分为两种情况:

(1). 正常使用:检测到人脸则将人脸结果(人脸位置、大小)发送至前台,前台会将人脸框出来;

(2). 录入人脸:检测到人脸,则将人脸截取出来保存成图片并存放于对应的用户目录下,目录为faces,存放人脸的目录为faces/编号_姓名,如编号为123姓名为ABC的用户,其人脸位于faces/123_ABC目录。

人脸识别线程:opencv_face_recogn_thread()

人脸识别的图像来源于经人脸检测得到的人脸图(只截取出人脸部分),因此,人脸识别要处理的图像比人脸检测的少得多。

 更多具体细节不细说...

教程文档:

搭建环境(安装OPENCV和QT):一步一步手把手教你如何安装,如下截图文档; 

工程源码:详细注释,详细设计文档,详细说明如何实现,还有github提交记录,教你如何从0开始逐个功能一一实现。

源码详解:

整理有文档如下:

以上项目资料文档均开源共享,如有需要请加群下载。

帮助/答疑/辅导...等请联系博主,请点如下链接:

linux_face.txt · zengzr/share_contact - Gitee.com

如有任何问题,可私信博客,将竭力解决。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐