赞
踩
在别人的代码上修改得到的,源代码好像不太准确,主要的原理就是用dlib工具找到68个人脸关键点,然后计算点之间的欧氏距离,具体得看你想要实现什么功能
我主要检测眼睛上的点和嘴巴上的点,当眼睛上的某几个点之间的距离小于设置的阈值几帧后,判断为打盹,也就是疲劳驾驶,有时候人瞌睡的时候也会打哈欠,所以也检测了嘴巴的点,但没有做优化,嘴巴部分还可以更进一步优化的,不过太花时间了,就先不做了,思路知道就行,果然搞这个最后都变成了调参。
- # -*- coding: utf-8 -*-
- #导入工具包
- from scipy.spatial import distance as dist
- from collections import OrderedDict
- import numpy as np
- import argparse
- import time
- import dlib #人脸识别相关
- import cv2
-
- 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))
- ])
-
- # http://vision.fe.uni-lj.si/cvww2016/proceedings/papers/05.pdf
- def eye_aspect_ratio(eye):
- # 计算距离,竖直的
- A = dist.euc

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。