122 lines
4.2 KiB
Markdown
122 lines
4.2 KiB
Markdown
|
||
## 项目结构
|
||
|
||
一个用于人脸识别的系统,使用了 Flask 作为 Web 框架,并结合了 SQLite 数据库进行数据存储。
|
||
|
||
### 目录结构
|
||
|
||
```
|
||
.
|
||
├── .venv # Python 虚拟环境
|
||
├── captured_faces # 用于保存捕获的人脸照片
|
||
├── db_image # 数据库添加的测试照片
|
||
├── templates # 存放 HTML 模板文件
|
||
├── app.py # Flask 应用主程序
|
||
├── face_database.db # SQLite 数据库文件
|
||
├── match_log.txt # 匹配记录日志文件
|
||
├── requirements.txt # 项目依赖的 Python 包
|
||
├── scanf_face.py # 人脸捕捉与匹配脚本
|
||
└── run_programs.py # 启动多个程序的脚本
|
||
```
|
||
|
||
## 主要组件
|
||
|
||
### 1. `.venv`
|
||
包含项目所需的 Python 虚拟环境。确保在激活虚拟环境后运行项目,以便使用正确的依赖包。
|
||
|
||
### 2. `captured_faces`
|
||
用于存储捕获到的人脸图像。这些图像将用于与数据库中的人脸进行匹配。
|
||
|
||
### 3. `db_image`
|
||
包含用于数据库测试的人脸照片。用于初始化数据库中的人脸记录。
|
||
|
||
### 4. `templates`
|
||
包含 HTML 模板文件。用于 Flask 应用的网页渲染。
|
||
|
||
### 5. `app.py`
|
||
Flask 应用的主程序,提供 Web 界面来展示匹配记录。它还使用 Socket.IO 实时更新数据。
|
||
|
||
### 6. `face_database.db`
|
||
SQLite 数据库文件,存储人脸编码和匹配记录。该数据库用于存储已知的人脸信息和匹配日志。
|
||
|
||
### 7. `match_log.txt`
|
||
记录人脸匹配的日志文件。每当检测到匹配时,将记录匹配信息到该文件中。
|
||
|
||
### 8. `requirements.txt`
|
||
列出项目的所有 Python 依赖包。可以使用 `pip install -r requirements.txt` 安装所需的库。
|
||
|
||
### 9. `scanf_face.py`
|
||
人脸捕捉和匹配脚本。通过摄像头捕捉人脸图像,并与数据库中的人脸进行匹配。
|
||
|
||
### 10. `run_programs.py`
|
||
脚本用于同时启动 `app.py` 和 `scanf_face.py` 两个程序。通过该脚本可以方便地管理多个程序的启动。
|
||
|
||
## 启动项目
|
||
|
||
### 1. 安装依赖
|
||
|
||
双击安装当前目录下/cmake-3.30.2-window-x86_64.msi文件
|
||
|
||
确保你已经安装了项目所需的依赖包。可以使用以下命令:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 2. 启动程序
|
||
|
||
- 一定要向数据库中添加图片,在scanf_face.py中
|
||
|
||
- 第一次启动会创建数据库和logs文件
|
||
|
||
``` python
|
||
# 向数据库中添加人脸
|
||
add_face_to_database("李四", "快递", "./stctic/db_image/test1.jpg")
|
||
add_face_to_database("张三", "居民", "./stctic/db_image/test2.jpg")
|
||
add_face_to_database("王五", "居民", "./stctic/db_image/test3.jpg")
|
||
```
|
||
根据你的环境修改
|
||

|
||
使用 `run_programs.py` 脚本同时启动 Flask 应用和人脸捕捉脚本:
|
||
```bash
|
||
python run_programs.py
|
||
```
|
||
|
||
### 3. 访问 Web 应用
|
||
在浏览器中访问 `http://localhost:5000` 查看 Flask 应用,监控匹配记录
|
||

|
||
|
||

|
||
|
||
### 4. 捕捉和匹配人脸
|
||
|
||
`scanf_face.py` 脚本会持续通过摄像头捕捉人脸图像,并与数据库中的人脸进行匹配。当检测到匹配时,会更新数据库和日志文件。
|
||
|
||
## 代码概述
|
||
|
||
### `app.py`
|
||
- **功能**:提供 Web 界面显示匹配记录,使用 Socket.IO 实时更新数据。
|
||
- **主要路由**:`/` - 显示匹配记录。
|
||
|
||
### `scanf_face.py`
|
||
- **功能**:通过摄像头捕捉人脸,生成编码并与数据库中的人脸进行匹配。
|
||
- **主要功能**:
|
||
- 捕捉图像并保存到 `captured_faces` 目录。
|
||
- 与数据库中的人脸编码进行匹配。
|
||
- 记录匹配结果到 `match_log.txt` 和数据库。
|
||
|
||
### `run_programs.py`
|
||
- **功能**:同时启动 `app.py` 和 `scanf_face.py` 两个程序。
|
||
- **主要功能**:
|
||
- 使用 `subprocess` 模块启动并管理多个进程。
|
||
|
||
## 注意事项
|
||
|
||
- 确保虚拟环境已激活并安装了所有依赖。
|
||
- 确保摄像头正常工作且能够捕捉到图像。
|
||
- 数据库和日志文件将会随着时间不断增加,请定期检查和维护这些文件。
|
||
- 需要单独安装cmake
|
||
|
||
---
|
||
|
||
联系我 :sairate@sina.cn |