photo/README.md

126 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

下面是一个示例 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. **克隆项目**
```bash
git clone <repository_url>
cd photo_project
```
2. **创建虚拟环境并安装依赖**
```bash
python -m venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
pip install -r requirements.txt
```
3. **配置环境变量**
如果需要自定义密钥,可以设置环境变量 `SECRET_KEY`,例如:
```bash
export SECRET_KEY='your_secret_key'
```
4. **初始化数据库**
运行项目时,系统会自动在应用上下文中创建数据库表。
## 运行项目
在项目根目录下执行:
```bash
python app.py
```
项目将启动在 `http://127.0.0.1:5000/`,可在浏览器中访问。
## 使用说明
- **首页**
访问根网页 `/`,进入首页,可选择进入用户管理、照片上传和查询页面。
- **用户管理**
访问 `/user_management` 页面,上传用户头像后,系统自动提取最大人脸并生成面部特征码保存到数据库。
- **照片上传**
访问 `/photo_upload` 页面,上传一张或多张照片,系统将对每张照片提取最大人脸,与数据库中用户进行比对,匹配成功后将照片移动至用户目录,并记录拍摄时间。
- **查询照片**
访问 `/search` 页面根据输入的用户名和拍摄日期格式YYYY-MM-DD查询用户当天的照片。
## 注意事项
- 请确保 `templates` 文件夹中包含必要的 HTML 模板(如 `index.html`、`user_management.html`、`upload.html` 和 `search.html`)。
- 照片上传目录默认位于 `static/uploads` 下,建议定期检查和清理临时文件夹 `static/uploads/temp`
- 本项目使用 SQLite 数据库,适合中小型应用,若用于生产环境,请考虑替换为更适合的数据库。
## 依赖
主要依赖包包括:
- Flask
- flask_session
- SQLAlchemy
- face_recognition
- OpenCV (opencv-python)
- Pillow
- numpy
详细依赖请参见 `requirements.txt`
## 版权与许可证
本项目仅供学习和测试使用,具体版权和许可证信息请根据实际情况添加。