OpenCV中的表情识别

一、介绍

本次是一个基于dlib68点人脸关键点的简单表情识别程序。它从视频中逐帧读取画面,检测人脸,提取嘴部、脸颊、下巴等关键点,计算三个几何比例特征,再通过阈值判断表情:正常、大笑、哭泣、微笑,最后在嘴部画凸包并显示中文标签。

二、核心代码讲解

2.1整体功能与依赖

numpy:数组和向量计算。

dlib:人脸检测和68点关键点预测。

cv2:OpenCV,读取视频、显示图像、画轮廓。

eucliden_distances:计算两个点之间的欧式距离。

PIL:在OpenCV图像上绘制中文文字。

2.2三个表情特征函数

2.2.1.MAR(shape):嘴部宽高比,用于检测大笑。

dlib68点中,48到67是嘴部区域。

shape48和shape54是左右嘴角;

shape50、shape51、shape52是上唇附近的点;

shape56、shape57、shape58是下唇附近的点;

A、B、C分别计算上唇到下唇三组垂直距离,取平均值,表示嘴张开的程度。

D是左右嘴角的水平距离,表示嘴的宽度。

MAR=平均上下唇距离 / 嘴角宽度

2.2.2.MJR(shape):嘴宽与脸颊宽比值,用于检测微笑

M:左右嘴角距离,即嘴宽。

J:shape3和shape13是下颌轮廓左右两侧的点,近似脸宽。

MJR = 嘴宽 / 脸宽

2.2.3.MDR(shape):嘴角下垂比,用于检测哭泣

mouth_corner_y:左右嘴角的平均y坐标。

upper_lib_y:上唇某一点的y坐标。

face_height:shape8是下巴,shape33是鼻尖,二者距离近似脸高。

图像坐标中y轴向下增大,所以嘴角越靠下,mouth_corner_y越大,drop_ratio越大。

2.3中文绘制函数cv2AddChineseText

OpenCV自带的cv2.putText()不支持中文,所以这里用PIL绘制。

流程:1.OpenCV图像是BGR格式,先转成RGB。

2.用ImageDraw和黑体字绘制中文。

3.再转回OpenCV的BGR格式。

如果找不到黑体,会回退到默认字体,但默认字体通常不支持中文,可能显示方框。

2.4主程序流程

detector:dlib正脸检测器

predictor:68点关键点预测器。

cap:读取指定路径的视频。

每次读取一帧,然后检测所有人脸。

第二个参数0表示不做上采样,速度快,但小脸可能漏检。

将dlib的关键点对象转成numpy坐标数组,形状为(68,2),每一行是(x,y)。

1.先判断大笑:MAR大于0.5.

2.再判断哭泣:MDR大于0.02.

3.再判断微笑:MJR大于0.55

4.都不满足则为正常。

2.5画嘴部凸包并添加中文标签

shape48:61取嘴部48到60号点。

cv2.convexHull计算嘴部凸包。

mouthHull0,0作为文字显示位置,通常是凸包第一个点。

cv2.drawContours画出绿色嘴部轮廓。

三、总结

它是一个入门级的计算机视觉表情识别示例,适合学习 dlib 关键点、OpenCV 视频处理和简单几何特征分类。实际项目中需要调整阈值、增加鲁棒性,并考虑使用更先进的表情识别模型。

相关推荐
AI的探索之旅11 小时前
97 个 OpenCV 实例(三十七):二维码识别,一张图四个码的陷阱
c++·opencv·计算机视觉
≮傷£≯√3 天前
OpenCV 边缘检测 Canny
人工智能·opencv·计算机视觉
≮傷£≯√4 天前
opencv 图像处理(一)
图像处理·人工智能·opencv
sali-tec4 天前
C# 基于OpenCv的视觉工作流-章114-视觉与http通讯
图像处理·人工智能·opencv·计算机视觉·c#
ahccqw4 天前
Opencv 基础常用API
人工智能·opencv·计算机视觉
2601_967987374 天前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程
python·opencv·yolo·目标检测·游戏自动化
zhippt_10144 天前
图转PPT实测:截图、课件照片如何还原成可编辑幻灯片
opencv·powerpoint
W_326005 天前
Python 图像处理第二十八章|OpenCV 形态学操作进阶:腐蚀、膨胀、开运算、闭运算、梯度、顶帽黑帽
图像处理·人工智能·python·opencv·计算机视觉
代码山河5 天前
图像基础:HSV颜色空间详解及颜色提取实战
opencv·目标检测·计算机视觉·教程
再__努力1点6 天前
RK3576/RV1126B多路视频 AI 开源引擎 CosmoEdge:从模型到交付,轻松搞定!
人工智能·opencv·计算机视觉·架构·课程设计