下面是一个示例 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`。

## 版权与许可证

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

