Go to file
sairate ff7b934797 Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
.idea Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
__pycache__ Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
instance Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
static Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
templates Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
README.md Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
app.py Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
functions.py Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
models.py Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00
test.py Signed-off-by: sairate <sairate@sina.cn> 2025-02-05 12:29:13 +08:00

README.md

下面是一个示例 README 文档,你可以将其保存为 README.md 文件,并根据实际需求进行调整:


Photo Project

本项目是一个基于 Flask 的人脸识别应用,用于处理用户头像上传和照片匹配。系统通过提取上传图片中最大的人脸区域生成面部特征码,并将用户信息和照片信息存储到 SQLite 数据库中,支持查询用户照片。

项目功能

  • 用户管理

    • 上传用户头像,自动提取最大人脸并生成面部特征码。
    • 编辑和删除用户信息。
  • 照片上传

    • 支持批量照片上传。
    • 自动检测每张照片中最大的那张人脸,提取面部特征码,与已注册用户进行比对。
    • 匹配成功后将照片移动到用户目录,并记录拍摄时间。
  • 查询功能

    • 根据用户名和拍摄日期查询用户照片。
  • 其他功能

    • 根据图片 EXIF 信息获取拍摄时间。
    • 自动校正图片方向。

项目结构

photo_project/                   # 项目根目录
├── .venv/                       # 虚拟环境目录(可选)
├── app.py                       # Flask 主应用程序,包含所有业务逻辑和路由
├── fuctions.py                  # 功能函数
├── moodle.py                    # 数据库模型定义User、Photo
├── requirements.txt             # 项目依赖包列表
├── README.md                    # 项目说明文档
├── templates/                   # HTML 模板文件
│   ├── index.html               # 首页模板
│   ├── user_management.html     # 用户管理页面模板
│   ├── upload.html              # 照片上传及结果展示模板
│   └── search.html              # 查询页面模板
└── static/                      # 静态文件目录
    └── uploads/                 # 图片上传目录
        ├── users/               # 用户头像和照片存储目录(按用户/日期组织)
        └── temp/                # 临时目录,用于存储上传处理中的图片,分类完成的照片会删除

安装与配置

  1. 克隆项目

    git clone <repository_url>
    cd photo_project
    
  2. 创建虚拟环境并安装依赖

    python -m venv .venv
    source .venv/bin/activate   # Linux/macOS
    .venv\Scripts\activate      # Windows
    pip install -r requirements.txt
    
  3. 配置环境变量

    如果需要自定义密钥,可以设置环境变量 SECRET_KEY,例如:

    export SECRET_KEY='your_secret_key'
    
  4. 初始化数据库

    运行项目时,系统会自动在应用上下文中创建数据库表。

运行项目

在项目根目录下执行:

python app.py

项目将启动在 http://127.0.0.1:5000/,可在浏览器中访问。

使用说明

  • 首页
    访问根网页 /,进入首页,可选择进入用户管理、照片上传和查询页面。

  • 用户管理
    访问 /user_management 页面,上传用户头像后,系统自动提取最大人脸并生成面部特征码保存到数据库。

  • 照片上传
    访问 /photo_upload 页面,上传一张或多张照片,系统将对每张照片提取最大人脸,与数据库中用户进行比对,匹配成功后将照片移动至用户目录,并记录拍摄时间。

  • 查询照片
    访问 /search 页面根据输入的用户名和拍摄日期格式YYYY-MM-DD查询用户当天的照片。

注意事项

  • 请确保 templates 文件夹中包含必要的 HTML 模板(如 index.htmluser_management.htmlupload.htmlsearch.html)。
  • 照片上传目录默认位于 static/uploads 下,建议定期检查和清理临时文件夹 static/uploads/temp
  • 本项目使用 SQLite 数据库,适合中小型应用,若用于生产环境,请考虑替换为更适合的数据库。

依赖

主要依赖包包括:

  • Flask
  • flask_session
  • SQLAlchemy
  • face_recognition
  • OpenCV (opencv-python)
  • Pillow
  • numpy

详细依赖请参见 requirements.txt

版权与许可证

本项目仅供学习和测试使用,具体版权和许可证信息请根据实际情况添加。