from collections import OrderedDict#带顺序的字典
import dlib
import cv2
import numpy as np
import time
#先检测人脸框在整张图像中的位置,再得出各个关键点相对于人脸框的位置(检测更加准确)
#设置参数:人脸关键点有68个
#1-17脸颊,18-22左眉毛,23-27右眉毛,28-36鼻子,37-42左眼睛,43-48右眼睛,49-68嘴巴
FACIAL_LANDMARKS_68_IDXS=OrderedDict([#参数是有顺序的,不会是乱序的
("mouth",(48,68)),
("right_eyebrow",(17,22)),
("left_eyebrow",(22,27)),
("right_eye",(36,42)),
("left_eye",(42,48)),
("nose",(27,36)),
("jaw",(0,17))
])
#将人脸框中的68个关键点转换为坐标数组的形式
def shape_to_np(shape,dtype="int"):
coords=np.zeros((shape.num_parts,2),dtype=dtype)#检测68*2
for i in range(0,shape.num_parts):#遍历每一个关键点,shape.num_parts=68
coords[i]=(shape.part(i).x,shape.part(i).y)#遍历每一个关键点,得到坐标
return coords
#疲劳监测:眨眼次数检测
#ear指标就是睁着眼睛的时候竖向距离大一些,闭上眼睛的竖向距离小一些
d
实战五、openCv实现疲劳监测
最新推荐文章于 2024-11-10 21:54:57 发布