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