|
||
---|---|---|
.idea | ||
__pycache__ | ||
instance | ||
static | ||
templates | ||
README.md | ||
app.py | ||
functions.py | ||
models.py | ||
test.py |
README.md
下面是一个示例 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/ # 临时目录,用于存储上传处理中的图片,分类完成的照片会删除
安装与配置
-
克隆项目
git clone <repository_url> cd photo_project
-
创建虚拟环境并安装依赖
python -m venv .venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows pip install -r requirements.txt
-
配置环境变量
如果需要自定义密钥,可以设置环境变量
SECRET_KEY
,例如:export SECRET_KEY='your_secret_key'
-
初始化数据库
运行项目时,系统会自动在应用上下文中创建数据库表。
运行项目
在项目根目录下执行:
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
。
版权与许可证
本项目仅供学习和测试使用,具体版权和许可证信息请根据实际情况添加。