应用场景
情绪识别技术在多个领域具有广泛应用,尤其是在需要了解和分析人类情感反应的场合:
- :通过长期监控和分析一个人的情绪变化来辅助医生进行诊断或治疗效果评估。
基于 DeepFace 深度学习库与 OpenCV 构建实时情绪分析系统。通过摄像头捕捉视频流,利用滑动平均算法计算帧率,对每一帧人脸进行情绪识别并标注置信度。支持自然、开心、伤心、恐惧、惊讶等状态检测。适用于心理健康评估、用户体验研究、互动娱乐及安全监控等领域,为情感计算提供基础框架。

情绪识别技术在多个领域具有广泛应用,尤其是在需要了解和分析人类情感反应的场合:
cv2):开源计算机视觉库,用于捕获视频流、处理图像及绘制标注。np):科学计算基础库,通常与 OpenCV 配合使用。cv2.VideoCapture(0) 打开摄像头并循环读取帧。time.time() 获取时间戳,通过滑动平均方法平滑 FPS 值。DeepFace.analyze() 对每一帧中的人脸进行情绪分析。q 键退出程序。主要通过摄像头捕捉实时视频流,使用深度学习模型对每一帧进行情绪分析,并在视频上标记出检测到的情绪和置信度,同时显示当前的 FPS。
import cv2
import time
import numpy as np
from deepface import DeepFace
cv2:OpenCV 库,用于处理图像和视频流。time:用于计算时间间隔,进而计算 FPS。numpy:图像处理基础库。DeepFace:基于深度学习的面部识别和分析库。cap = cv2.VideoCapture(0)
prev_time = time.time()
fps = 0
alpha = 0.9
cv2.VideoCapture(0):打开默认摄像头。prev_time 和 fps:用于计算 FPS 的变量。alpha:用于滑动平均计算 FPS 的权重值。while True:
ret, frame = cap.read()
if not ret:
break
# ... 处理逻辑 ...
cap.release()
cv2.destroyAllWindows()
current_time = time.time()
delta_time = current_time - prev_time
prev_time = current_time
if delta_time > 0:
instant_fps = 1.0 / delta_time
fps = alpha * fps + (1 - alpha) * instant_fps
result = DeepFace.analyze(frame, actions=['emotion'], enforce_detection=False)
for face in result:
x, y, w, h = face['region']['x'], face['region']['y'], face['region']['w'], face['region']['h']
emotion = face['dominant_emotion']
confidence = face['emotion'][emotion]
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
text = f'{emotion} ({confidence:.2f}%)'
cv2.putText(frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
DeepFace.analyze() 进行情绪分析。cv2.putText(frame, f'FPS: {fps:.2f}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 255), 2)
cv2.imshow("Emotion Detection", frame)
cv2.imshow() 显示带有标注的图像。if cv2.waitKey(1) & 0xFF == ord('q'):
break
q 键,则退出循环结束程序。import cv2
import time
import numpy as np
from deepface import DeepFace
# 打开摄像头
cap = cv2.VideoCapture(0)
# FPS 计算参数
prev_time = time.time()
fps = 0
alpha = 0.9 # 滑动平均权重,数值越大,FPS 越平稳
while True:
ret, frame = cap.read()
if not ret:
break
# 计算 FPS
current_time = time.time()
delta_time = current_time - prev_time
prev_time = current_time
if delta_time > 0:
instant_fps = 1.0 / delta_time
fps = alpha * fps + (1 - alpha) * instant_fps
# 计算滑动平均 FPS
try:
# 进行表情识别
result = DeepFace.analyze(frame, actions=['emotion'], enforce_detection=False)
for face in result:
x, y, w, h = face['region']['x'], face['region']['y'], face['region']['w'], face['region']['h']
emotion = face['dominant_emotion']
confidence = face['emotion'][emotion] # 获取表情的置信度
# 绘制人脸矩形框
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 在人脸上方显示情绪信息
text = f'{emotion} ({confidence:.2f}%)'
cv2.putText(frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
except Exception as e:
print("无法检测到人脸:", e)
# 显示 FPS(平滑更新)
cv2.putText(frame, f'FPS: {fps:.2f}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 255), 2)
# 显示图像
cv2.imshow("Emotion Detection", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
核心在于结合了 OpenCV 进行视频处理和 DeepFace 进行面部情绪分析的能力。通过这些组件,实现从摄像头实时捕捉视频、分析视频中人物的情绪状态并在视频画面上直观地展示分析结果的功能。这不仅展示了如何利用现有的 AI 库快速构建实用的应用程序,也为进一步开发基于情感识别的复杂系统提供了基础框架。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online