Python实现人脸表情识别
1. 系统概述
本项目实现了一个实时人脸表情识别系统,通过摄像头实时捕获视频流,检测人脸位置并识别表情。系统使用 DeepFace 进行表情分析,支持7种基本表情的识别:开心、难过、生气、恐惧、惊讶、平静和厌恶。
2. 核心功能
- •实时人脸检测:使用 face_recognition 库实时定位人脸
- •表情识别:使用 DeepFace 分析人脸表情
- •多人脸处理:支持同时识别多个人脸的表情
- •中文显示:支持中文标签显示
- •置信度显示:显示表情识别的置信度
3. 技术实现
核心库介绍
- •DeepFace:基于深度学习的人脸分析库
- • 支持多种表情识别
- • 预训练模型性能好
- • API简单易用
- •face_recognition:人脸检测和定位
- •OpenCV (cv2):视频流处理和图像绘制
- •PIL:中文文本渲染
关键步骤解析
- 1.初始化和预加载
# 预加载模型减少首次识别延迟
DeepFace.analyze(
np.zeros((48, 48, 3), dtype=np.uint8),
actions=['emotion'],
enforce_detection=False
)
- 2.表情识别处理
# 使用DeepFace分析表情
result = DeepFace.analyze(
face_image,
actions=['emotion'],
enforce_detection=False,
silent=True
)
- 3.中文标签映射
self.emotion_map = {
'happy': '开心',
'sad': '难过',
'angry': '生气',
'fear': '恐惧',
'surprise': '惊讶',
'neutral': '平静',
'disgust': '厌恶'
}
4. 性能优化
图像处理优化
- • 缩小输入图像加快处理速度
- • 预加载模型减少延迟
- • 使用 silent 模式减少输出
识别准确度优化
- • 使用 enforce_detection=False 提高容错性
- • 添加异常处理确保稳定运行
- • 置信度过滤提高准确性
5. 使用说明
环境准备
# Python 3.10环境(推荐)
conda create -n face_rec python=3.10
conda activate face_rec
# 安装依赖
pip install deepface tensorflow
pip install face_recognition opencv-python pillow
运行步骤
- 1. 确保摄像头可用
- 2. 运行程序:
python emotion_recognition_df.py
- 3. 使用说明:
- • 程序启动后会自动打开摄像头
- • 实时显示检测到的人脸和表情
- • 显示表情类型和置信度
- • 按'q'键退出程序
6. 注意事项
- • 确保光线充足
- • 保持适当的人脸距离
- • 避免剧烈运动
- • 首次运行可能需要下载模型
- • CPU占用较高是正常现象
7. 技术特点
- • 实时处理:支持实时视频流分析
- • 多人识别:可同时处理多个人脸
- • 高精度:使用预训练深度学习模型
- • 中文支持:显示中文表情标签
- • 开发友好:代码结构清晰,易于扩展
8. 源代码
"""
emotion_recognition_df.py
人脸表情识别系统
本程序实现了一个实时人脸表情识别系统,主要功能包括:
1. 实时人脸检测
2. 表情识别分析
3. 多人脸同时处理
4. 中文结果显示
作者:[Jojo]
版本:1.0.0
日期:2025-02-12
"""
import cv2
import numpy as np
from deepface import DeepFace
import face_recognition
from PIL import Image, ImageDraw, ImageFont
classEmotionRecognizer:
"""
表情识别器类
实现了人脸表情识别的核心功能,包括:
- 表情识别和分析
- 中文标签映射
- 结果可视化
"""
def __init__(self):
"""初始化表情识别器"""
# 表情标签映射字典
self.emotion_map = {
'happy': '开心',
'sad': '难过',
'angry': '生气',
'fear': '恐惧',
'surprise': '惊讶',
'neutral': '平静',
'disgust': '厌恶',
'happiness': '开心',
'sadness': '难过',