毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

时间:2024-03-25 18:10:34

毕业一载有余,把毕业设计作品分享一下,希望能帮助到有需要的同学们。

资源下载:链接见底部(源码+论文)

 

简介:

本设计基于linux操作系统,由客户端(门禁设备)和服务器(后台处理中心)组成,通过以太网形成组网,实现一个人脸识别门禁系统。客户端为嵌入式Linux设备,采用QT库显示界面,通过摄像头采集图像。服务器为PC上 Ubuntu系统,采用QT库显示界面,以OpenCV库为基础进行图像处理,采用基于Haar特征的人脸检测及LBPH人脸识别算法。客户端负责采集图像并上传服务器,以及控制门禁设备;服务器负责对图像进行人脸识别,以及增删人脸等的用户管理,是整个系统的处理中心。

 

图例:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

 

以下摘取论文中部分内容,简单介绍:

论 文 目 录

1 绪论... 1

1.1   课题研究的背景及意义... 1

1.2 国内外研究的现状及发展趋势... 1

1.3 论文主要的研究内容及章节安排... 2

2 系统整体设计方案及实现框架... 3

2.1 系统设计方案... 3

2.2 系统实现框架... 4

3 客户端嵌入式门禁设备的设计及实现... 6

3.1 嵌入式系统概述... 6

3.2 嵌入式Linux平台运行环境的搭建... 6

3.2.1 嵌入式Linux平台环境搭建概述... 6

3.2.2 嵌入式Linux系统的移植... 7

3.2.3 第三方库的移植... 10

3.3 嵌入式Linux平台应用程序的设计及实现... 13

3.3.1 图像采集模块的设计及实现... 13

3.3.2 图像处理模块的设计及实现... 14

3.3.3 显示模块的设计及实现... 15

3.3.4 网络通信模块的设计及实现... 16

3.3.5 外围设备的设计及实现... 18

4 服务器应用程序和人脸识别功能的设计及实现... 20

4.1显示模块的设计及实现... 20

4.2 网络通信模块的设计及实现... 20

4.3 人脸识别实现流程概述... 21

4.4 人脸库的建立及模型训练... 22

4.5 人脸检测算法的实现... 23

4.6 人脸识别算法的实现... 24

4.6.1 LBPH算法的原理... 24

4.6.2 LBPH算法的应用... 27

4.7 用户管理功能的设计及实现... 29

4.7.1 添加用户功能的实现... 29

4.7.2 删除用户功能的实现... 30

5 系统功能的测试展示及结果分析... 31

5.1 预期功能概述... 31

5.2 实现功能的测试... 32

5.3 系统的结果分析... 39

6 总结与展望... 40

参考文献... 41

致谢... 42

 

 

2 系统整体设计方案及实现框架

2.1 系统设计方案

本系统整体上实现一个基于嵌入式技术和人脸识别技术的门禁系统,大致可分为两个大模块:客户端-嵌入式门禁设备、服务器-后台处理和管理中心。

  1. 客户端:核心采用ARM系列芯片-S5PV210(Cortex-a8),外围有USB摄像头、LCD显示屏、DM9000网卡及其他一些必要硬件。实现界面显示、图像采集、图像处理、与服务器网络通信(TCP连接)、控制门锁等功能。
  2. 服务器:采用PC机上运行的Ubuntu系统,外围有摄像头。实现界面显示、与客户端网络通信、图像处理、人脸识别、用户管理等功能,是整个门禁系统的管理中心。

系统框图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图2.1 系统整体设计方案框架图

 

系统的工作流程方案:系统启动,服务器加载人脸库数据,并与客户端连接;客户端通过摄像头采集图像并显示于LCD,同时通过网络将图像数据发送至服务器;服务器收到图像数据后,对图像进行处理(数据格式转换),人脸检测与识别,同时将图像显示于界面上,并将经人脸检测与识别后的结果反馈至客户端;客户端根据反馈结果选择控制门锁的开关。至此,完成一次完整的工作流程,大致流程如下:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图2.2 系统的大致工作流程

 

2.2 系统实现框架

系统整体设计方案中已列出需求,现需对方案中的每个功能进行分析并确定其实现方法。通过查阅大量资料,功能及其实现整理如下:

  1. 客户端-嵌入式ARM板上的功能:
  1. 嵌入式平台:CPU采用三星公司的S5PV210(Cortex-a8),操作系统采用linux-2.6.35.7内核,选用粤嵌公司的GEC-210开发板符合上述条件;
  2. 图像采集功能:硬件使用USB摄像头,软件采用视频驱动V4L2子系统驱动架构;
  3. 图像处理功能:主要指V4L2采集的图像、OpenCV 图像、QT图像三者之间的格式相互转换,需要借助OpenCV 库、QT库及自编的函数实现;
  4. 界面显示功能:显示器为LCD屏,采用QT库进行界面的设计布局和显示;
  5. 网络通信功能:采用linux系统的socket套接字通信,TCP连接方式;
  6. 门锁控制功能:根据门锁的驱动方式,采用GPIO驱动来控制;

 

  1. 服务器-PC机上Ubuntu系统:
  1. PC系统平台:采用Ubuntu-14.04版本,运行于Win7上的虚拟机上;
  2. 界面显示功能:同样采用QT进行显示;
  3. 网络通信功能:同样采用linux的socket通信,TCP方式;
  4. 人脸识别功能:采用OpenCV 库进行人脸识别相关的算法,包括人脸库模型训练、人脸检测、人脸识别等功能;
  5. 图像处理功能:主要指V4L2采集的图像、OpenCV 图像、QT图像三者之间的格式相互转换,需要借助OpenCV 库、QT库及自编的函数实现;
  6. 用户管理功能:包括添加用户、删除用户等,以自编函数实现;

 

 

5.2 实现功能的测试

测试是项目开发中的一个重要环节,有利于对整个项目开发的完成情况作出分析,找出存在问题,有利于不断完善作品,提高其完整性及稳定性。

对本设计中的预期功能作针对性测试,各功能模块的实际测试结果如下:

1、客户端的图像采集及界面显示功能,在ARM板上的实际效果,如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统
图5.1 客户端界面

由上图可知,界面上的背景图、信息标签等组件显示于设定的位置上,说明功能正常。

 

2、客户端的图像采集及显示功能,ARM板上由摄像头进行采集、LCD显示,效果如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.2 ARM板的图像采集及显示

上图中,上方为摄像头,LCD显示的画面为摄像头所采集,通过移动摄像头可见捕捉到的画面也为摄像头所对着的地方,显示画面实时性高,质量好,无花屏、卡顿等现象,证明该功能正常。

 

3、服务器的界面显示功能,在服务器Ubuntu上显示的主界面,如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.3 服务器界面

由图可知,图片、标签等均显示于设定位置上,功能正常。

 

4、网络数据传输功能: 以图像传输为例进行测试,在ARM板上采集的图像,通过以太网传输到服务器Ubuntu上,功能正常表现为在Ubuntu上可显示实时画面,并与ARM板上显示的图像同步,如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.4 图像传输

上图中,服务器显示的图像为客户端所采集,移动客户端的摄像头,画面也随之发生变化,实现性高,无花屏、卡顿等现在,证明功能正常。

 

5、人脸检测功能:当摄像头采集到一个完整的正脸时,ARM板上LCD显示如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.5 人脸检测

由上图可见,人脸部分被一个矩形框标出,标记位置正确,移动人脸,矩形框会随着人脸移动变化,说明功能正常。

 

6、人脸识别及设备控制功能:

当视频流中出现的人脸,不是人脸库中某一人脸时,现象如图5.5,该人脸通过多角度的测试均未成功通过人脸识别验证,相似度仅为59%,无法打开门锁控制器(下方LED开关指示灯不亮);

当出现的人脸为人脸库中的某一人脸时,现象如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.6 识别人脸库中某一人脸

上图中,提示识别成功,人脸标签为10,相似度为80%,名字为“QiuQing”,同时,门锁控制器成功开启(开关指示灯变亮),由此知,功能正常。

 

7、添加人脸功能:用一个未录入人脸库的人脸进行测试,为方便起见,将用上节中不能通过人脸识别测试的人脸进行添加。编辑输入框内容“ZengZhaorong”,点击添加人脸,现象如图:
 

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.7 添加人脸

上图中,已打开服务器Ubuntu上的摄像头,当显示检测到人脸时点击拍照按钮,成功拍下人脸,并右下角显示已拍人脸,连拍10张后,提示添加成功。

成功添加人脸后,再次到客户端ARM板上测试人脸识别功能,现象如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.8 添加人脸后的人脸识别

由上图知,提示识别成功,人脸标签为1,相似度为81%,名字为“ZengZhaorong”,同时,门锁控制器成功开启,由此知,添加人脸功能正常。

8、删除人脸功能:将上节添加的人脸再次删除。在删除人脸选择栏,选择名字 “ZengZhaorong”,点击删除,现象如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.9 删除人脸

上图中,提示是否确认删除,点击“Yes”,即提示删除人脸成功。再次用已删除的人脸测试人脸识别功能,现象如图:

毕业设计:基于ARM-Linux的应用OpenCV和QT实现的人脸识别门禁系统

图5.10 删除人脸后的人脸识别

上图中,已删除的人脸,通过多角度试验,仍无法通过验证,相似度为63%,证明删除人脸功能正常。

 

资源下载链接:https://download.csdn.net/download/qq_30155503/11929118

资源包含:项目源码、论文、答辩PPT、环境搭建及运行说明文档
温馨提示:由于CSDN无法免积分,若想免费获取请私聊给我邮箱。