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