Go to file
sairate 8240ccf014 Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:47:45 +08:00
.idea Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:45:51 +08:00
doc/doc_image Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:45:51 +08:00
static Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
templates Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
.gitignore Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:45:51 +08:00
LICENSE.md Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
README.md Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:47:45 +08:00
app.py Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
cmake-3.30.2-windows-x86_64.msi Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
face_database.db Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
future.md Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
match_log.txt Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
requirements.txt Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
run_programs.py Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00
scanf_face.py Signed-off-by: sairate <sairate@sina.cn> 2024-09-24 19:32:51 +08:00

README.md

项目结构

一个用于人脸识别的系统,使用了 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.pyscanf_face.py 两个程序。通过该脚本可以方便地管理多个程序的启动。

启动项目

1. 安装依赖

双击安装当前目录下/cmake-3.30.2-window-x86_64.msi文件

确保你已经安装了项目所需的依赖包。可以使用以下命令:

pip install -r requirements.txt

2. 启动程序

  • 一定要向数据库中添加图片在scanf_face.py中

  • 第一次启动会创建数据库和logs文件

    # 向数据库中添加人脸
    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 应用和人脸捕捉脚本:

python run_programs.py

3. 访问 Web 应用

在浏览器中访问 http://localhost:5000 查看 Flask 应用,监控匹配记录 logs

4. 捕捉和匹配人脸

scanf_face.py 脚本会持续通过摄像头捕捉人脸图像,并与数据库中的人脸进行匹配。当检测到匹配时,会更新数据库和日志文件。

代码概述

app.py

  • 功能:提供 Web 界面显示匹配记录,使用 Socket.IO 实时更新数据。
  • 主要路由/ - 显示匹配记录。

scanf_face.py

  • 功能:通过摄像头捕捉人脸,生成编码并与数据库中的人脸进行匹配。
  • 主要功能
    • 捕捉图像并保存到 captured_faces 目录。
    • 与数据库中的人脸编码进行匹配。
    • 记录匹配结果到 match_log.txt 和数据库。

run_programs.py

  • 功能:同时启动 app.pyscanf_face.py 两个程序。
  • 主要功能
    • 使用 subprocess 模块启动并管理多个进程。

注意事项

  • 确保虚拟环境已激活并安装了所有依赖。
  • 确保摄像头正常工作且能够捕捉到图像。
  • 数据库和日志文件将会随着时间不断增加,请定期检查和维护这些文件。
  • 需要单独安装cmake

联系我 sairate@sina.cn