Dockerized Flask face recognition / Docker 化人脸识别 Flask 服务
974
基于 Python + OpenCV + dlib 构建的轻量级人脸识别服务,提供 REST API 接口实现人脸库管理和人脸识别功能。
该 Docker 镜像封装了一个 Flask 后端服务,具备以下核心功能:
docker run -d \
--name cnbbx_facerecognition \
--restart unless-stopped \
-p 8080:8080 \
-v /root/faces:/app/faces \
cnbbx/face-recognition
| 参数 | 说明 |
|---|---|
-d | 后台运行容器 |
--name cnbbx_facerecognition | 为容器命名,便于管理 |
--restart unless-stopped | 容器退出时自动重启(除非手动停止) |
-p 8080:8080 | 端口映射:宿主机 8080 端口 → 容器内 8080 端口 |
-v /root/faces:/app/faces | 目录挂载:宿主机 /root/faces 目录 → 容器内 /app/faces(人脸库持久化) |
cnbbx/face-recognition | 镜像名称 |
容器启动后,可通过以下命令检查服务状态:
# 查看容器日志
docker logs cnbbx_facerecognition
# 正常输出示例:
# 🔍 加载人脸库(Docker环境)...
# ✅ 共加载0个人脸
# 🚀 Docker版人脸识别服务启动:http://0.0.0.0:8080
访问 http://<服务器IP>:8080/faces 应返回:
{"faces": []}
/faces
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | Query | String | 是 | 人脸唯一标识ID |
file | FormData | File | 是(POST) | 人脸图片文件(JPG/PNG,单人脸) |
GETGET http://localhost:8080/faces{"faces": ["user1", "user2"]}
POSTPOST http://localhost:8080/faces?id=user1(FormData 携带图片文件){"success": true, "msg": "人脸user1注册成功(Docker)"}
{"error": "未检测到人脸"}
DELETEDELETE http://localhost:8080/faces?id=user1{"success": true, "msg": "人脸user1已删除"}
| 状态码 | 说明 |
|---|---|
| 400 | 缺少参数/文件为空/人脸检测失败 |
/
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
file | FormData | File | 是 | 待识别的人脸图片(JPG/PNG) |
POSTPOST http://localhost:8080/(FormData 携带图片文件){
"count": 1,
"faces": [
{"id": "user1", "distance": 0.45}
]
}
{
"count": 1,
"faces": []
}
{"error": "检测到3张人脸,仅支持单人脸"}
| 字段 | 说明 |
|---|---|
count | 图片中检测到的人脸数量 |
faces | 匹配到的人脸列表(distance ≤ 0.6 为匹配成功) |
distance | 特征距离(值越小,相似度越高) |
docker logs cnbbx_facerecognitionnetstat -tulpn | grep 8080chmod 777 /root/facesdocker exec -it cnbbx_facerecognition ls /app/faces-v 参数实现人脸库持久化,确保容器重启后数据不丢失;GET/POST/DELETE /faces 管理人脸库,POST / 实现人脸识别,接口简洁易用;Content type
Image
Digest
sha256:3c9154538…
Size
388.6 MB
Last updated
9 months ago
docker pull cnbbx/face-recognition