# fracs
## 介绍
人脸识别门禁系统
Face recognition access control system (FRACS)
## 开发环境和工具
### 1. 开发工具:
* VSCode
### 2. 语言:
* 核心:Python3
* 界面:QML -> QtQuick -> Qt
### 3. Python依赖库:
* 界面相关:PyQt5/PySide2 -> Qt5(C++)
* 输入法插件:QtVirtualKeyboard (对于树莓派,需要单独安装)
* 摄像头:opencv-python-headless(不含GUI和contrib) -> OpenCV (C++)
* 人脸识别:face_recognition -> dlib -> DLib(C++)
说明:
* 对于Qt5的Python集成,有两个主流的库可用:PyQt5和PySide2
* PySide2在代码上基本与PyQt5兼容
* 这里我们同时使用了PySide2和PyQt5,但是只会有其中一个会生效
* 在PC平台,通过PIP安装的PySide2集成了qtvirtualkeyboard
* 而PyQt5则还需要单独下载Qt的qtvirtualkeyboard依赖,较为不方便
* 不过对于树莓派来说,无论是PyQt5还是PySide2,qtvirtualkeyboard都需要单独安装
* 但是我们的项目使用PySide2的话,将存在严重的内存泄漏(由PySide2导致)
* 因此,在默认情况下,树莓派使用PyQt5,而PC端使用PySide2
## 环境搭建
### Ubuntu PC
#### 1. 安装系统依赖
```bash
sudo apt install -y python3 python3-pip
sudo apt install -y cmake build-essential
```
#### 2. 安装Python库
```bash
# 安装PySide2(PC上默认使用PySide2,而不是PyQt5)
python3 -m pip install pyside2 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装opencv-python-headless
python3 -m pip install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装face_recognition
python3 -m pip install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple
```
注意:python库`face_recognition`依赖于dlib,dlib是通过编译安装的,如果该库安装失败,请尝试单独安装dlib
### Windows 10
#### 1. 安装MSVC工具链(可以考虑直接安装VS2019)
通过 https://visualstudio.microsoft.com/zh-hans/downloads/ 下载“Visual Studio 2019”社区版安装器
打开安装器,勾选“使用C++的桌面开发”,然后安装。
说明:安装MSVC工具链的原因是,人脸识别库face_recognition是基于dlib的,dlib需要编译安装,
MSVC工具链将作为编译dlib的工具(在安装face_recognition时会自动编译dlib,不需要手动操作,保证工具链是安装上的即可)。
#### 3. 安装Python
通过访问Python官网 https://www.python.org/downloads/ 下载最新版本的Python安装程序安装Python
#### 4. 安装Python库
```bash
# 安装CMAKE(dlib编译依赖)
python3 -m pip install cmake --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装Boost(dlib编译依赖)
python3 -m pip install boost -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装PySide2(PC上默认使用PySide2,而不是PyQt5)
python3 -m pip install pyside2 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装opencv-python-headless
python3 -m pip install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装face_recognition(依赖于dlib,安装前会自动下载并编译dlib)
python3 -m pip install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple
```
### 树莓派 (Raspbian)
#### 0、 注意事项
* 确保系统是buster版本(通过命令:lsb_release -a 可查看系统版本)
* 确保存储空间不低于16G,建议16G
* 建议使用树莓派4B 2G或更高配置的硬件
* 树莓派显示器分辨率编不要低于800x480
#### 1. 修改交换空间
对于树莓派,dlib需要较大的交换空间,默认的空间不够,至少需要配置1G的交换空间。
交换空间通过修改配置文件/etc/dphys-swapfile来完成,把`CONF_SWAPSIZE`设为1024即可
然后通过命令`dphys-swapfile restart`来时修改生效。
可以通过以下命令完成配置:
```bash
sudo sed -i '/^CONF_SWAPSIZE=/cCONF_SWAPSIZE=1024' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile restart
```
#### 2. 安装系统依赖
```bash
sudo apt update -y
sudo apt upgrade -y
sudo apt install -y python3 python3-pip
sudo apt install -y cmake build-essential
sudo apt install -y libatlas-base-dev
```
#### 3. 安装PyQt5
从目前的测试情况来看,PySide2在树莓派上存在严重的内存泄漏问题,因此在树莓派上使用PyQt5
由于我们使用到了PyQt5的一些插件,为了确保版本一致,这里需要使用apt安装PyQt5,而不能使用pip安装
```bash
# 安装PyQt5
sudo apt install -y python3-pyqt5 python3-pyqt5.qtquick
# 安装QML依赖
sudo apt install -y qml-module-qtquick2 qml-module-qtquick-controls2
sudo apt install -y qml-module-qtquick-window2 qml-module-qtquick-layouts
sudo apt install -y qml-module-qt-labs-folderlistmodelg
sudo apt install -y qml-module-qtquick-virtualkeyboard
sudo apt install -y qtvirtualkeyboard-plugin
```
#### 4. 安装Python库
```bash
# 更新 pip
python3 -m pip install pip --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装opencv-python-headless
python3 -m pip install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple
```
#### 5. 编译安装dlib
和PC端不同的是,树莓派需要单独编译dlib,下载dlib源码,然后编译:
```bash
git clone https://gitee.com/mxb360/dlib.git _dlib
cd _dlib
sudo python3 setup.py install
```
#### 6. 安装face_recognition
dlib编译安装完成之后,开始安装人脸识别库face_recognition
```
python3 -m pip install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple
```
## 设计说明
### 框架
fracs分为两个大部分组成:由QtQuick(Qml)完成的`界面流程`逻辑以及由Python完成`功能实现`流程逻辑
#### Qml界面流程
由用户操作的界面相关实现采用Qml语言。其实现位于resource/qml里。
所有的界面都通过resource/qml/main.qml加载,该文件会被QQuickView加载,从而在Python代码里加载整个Qml界面系统。
在当前的设计里,所有的Qml界面都会在main.qml里同时被加载,但是所有的界面默认都是不显示的。他们会等待Python代码的调控。
在main.qml里被加载的有以下类型:
主界面,密码认证界面,各个选项的主界面,输入法界面。
还有一些不是界面,是不可显示的Qml对象,如字体加载器,负责与Python交互的连接器和Qml功能调度器。
目前版本的fracs由以下界面构成:
* 主界面
主界面即fracs启动之后的看到的界面,包含人脸识别状态开门状态,也就是正常工作时的状态。
该界面实现文件是resources/qml/AccessControl.qml
界面的具体实现参见resources/qml/AccessControl.qml里的相关注释
* 选项菜单
该界面是嵌套在主界面里的一个子界面
在主界面点击选项按钮会打开选项菜单,盖菜单被嵌入到摄像头画面的左上角。选项菜单里包含了各种选项,用于配置功能和数据录入。
其实现文件是resources/qml/OptionsPopup.qml
* 密码认证界面
在进行任何操作时,都需要密码认证,密码认证
该界面实现文件是resources/qml/Auth.qml
* 密码修改界面
用于修改管理员密码的界面
其实现文件是resources/qml/ChangePassword.qml
* 人脸录入界面
用于录入人脸信息的界面
该界面基于Qml的StackView组件,来切换子界面
其实现文件是resources/qml/FaceRecord.qml
* 开门记录界面
用于展示开门记录的界面
其实现文件是resources/qml/AccessData.qml
* 未实现的功能代替界面
用于代替暂时为实现的的功能的界面
其实现文件是resources/qml/Unimplemented.qml
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Python 毕业设计基于 opencv、Dlib 的人脸识别门禁系统代码+使用教程,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 Python 毕业设计基于 opencv、Dlib 的人脸识别门禁系统代码+使用教程,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 Python 毕业设计基于 opencv、Dlib 的人脸识别门禁系统代码+使用教程,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 Python 毕业设计基于 opencv、Dlib 的人脸识别门禁系统代码+使用教程,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。Python 毕业设计基于 opencv、Dlib 的人脸识别。
资源推荐
资源详情
资源评论
收起资源包目录
python 基于 opencv、Dlib 的人脸识别门禁系统源码.zip (34个子文件)
主master
doc
flow-diagram
fracs流程图.vsdx 87KB
resources
font
msyh.ttc 18.74MB
msyhl.ttc 11.58MB
msyhbd.ttc 16.05MB
qml
Fracs.qml 4KB
AccessData.qml 4KB
PyConnector.qml 2KB
Auth.qml 4KB
FaceRecord.qml 20KB
ChangePassword.qml 7KB
FracsText.qml 221B
main.qml 1KB
OptionsPopup.qml 3KB
AccessControl.qml 8KB
OptionsButton.qml 719B
Unimplemented.qml 1KB
images
options.png 11KB
src
access_control.py 8KB
qt5.py 2KB
distributor.py 998B
qml_connector.py 8KB
camera
opencv_camera.py 2KB
fracs_camera.py 3KB
face_recognition.py 4KB
face_record.py 5KB
fracs.py 1KB
door
virtual_door.py 574B
raspi_door.py 2KB
fracs_door.py 2KB
fracs_data.py 5KB
fracs.py 3KB
envsetup.sh 2KB
.gitignore 44B
README.md 7KB
共 34 条
- 1
资源评论
王二空间
- 粉丝: 7589
- 资源: 2110
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- springboot713校园志愿者管理系统--论文.zip
- springboot715桥牌计分系统.zip
- springboot716沁园健身房预约管理系统.zip
- springboot714校园疫情防控系统--论文.zip
- springboot719生鲜超市管理的设计与实现.zip
- springboot718生鲜交易系统--论文.zip
- springboot717游戏分享网站--论文.zip
- springboot721疫苗接种管理系统.zip
- 基于JavaScript的Sewise-Player播放器设计源码下载
- springboot722社区疫情防控平台.zip
- springboot720疫情防控期间某村外出务工人员信息管理系统--论文.zip
- springboot723福聚苑社区团购.zip
- springboot725篮球论坛系统--论文.zip
- springboot724篮球竞赛预约平台--论文.zip
- 基于微信小程序的汽车车行保养维修小程序设计源码
- springboot726线上买菜系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功