一、前言
mediapipe模块还提供了面部468个特征点的检测,所以拿来试试做一个面部表情的检测。
这次要实现两个目标:
1.面部检测
2.微笑表情检测
二、算法原理
1.面部检测
依旧是采用谷歌的mediapipe模块来获取面部的468个特征点。然后根据需要提取出我们想要的特征点坐标。
※确定468个特征点分别是脸部的哪个位置,实在是个比较繁琐的工作。
2.微笑表情检测
微笑表情的话,其实网上有很多范例,但是大多都是基于嘴巴裂开的程度以及眼睛眉毛的位置变化来检测。虽然也可以实现,但是感觉精度并不是很高。
于是本人淡定的对着镜子揣摩了几天,有了以下思路:
①微笑的时候,嘴巴并不会张开,眉毛眼睛也并不会动。
②无论微笑或者大笑,只要你笑,你的法令纹必然会出现。(很残酷的事实)
基于以上两点,我决定通过提取法令纹部位的像素值,然后检测法令纹是否出现来判定是否在笑,再通过嘴部张开的程度来判定是大笑或者微笑。
以古帅的脸为例,就是要采集左边两个红点连线以及右边两个红点连线上的像素值,并且判断像素值大小的标准偏差。偏差越大说明法令纹越深,于是可以判定为笑。然后再通过上下嘴唇的高度差来判定嘴巴张开的大小。嘴巴张开很大就表示在大笑,嘴巴没有张开表示在微笑。
※