photo/README.md

126 lines
4.2 KiB
Markdown
Raw Normal View History

下面是一个示例 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`
## 版权与许可证
本项目仅供学习和测试使用,具体版权和许可证信息请根据实际情况添加。