疲劳检测

pan.baidu.com/s/1Ng_-utB8BSrXlgVelc8ovw

#导入工具包
from scipy.spatial import distance as dist
from collections import OrderedDict
import numpy as np
import argparse
import time
import dlib
import cv2FACIAL_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.euclidean(eye[1], eye[5])B = dist.euclidean(eye[2], eye[4])# 计算距离,水平的C = dist.euclidean(eye[0], eye[3])# ear值ear = (A + B) / (2.0 * C)return ear# 输入参数
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--shape-predictor", required=True,help="path to facial landmark predictor")
ap.add_argument("-v", "--video", type=str, default="",help="path to input video file")
args = vars(ap.parse_args())# 设置判断参数
EYE_AR_THRESH = 0.3
EYE_AR_CONSEC_FRAMES = 3# 初始化计数器
COUNTER = 0
TOTAL = 0# 检测与定位工具
print("[INFO] loading facial landmark predictor...")
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(args["shape_predictor"])# 分别取两个眼睛区域
(lStart, lEnd) = FACIAL_LANDMARKS_68_IDXS["left_eye"]
(rStart, rEnd) = FACIAL_LANDMARKS_68_IDXS["right_eye"]# 读取视频
print("[INFO] starting video stream thread...")
vs = cv2.VideoCapture(args["video"])
#vs = FileVideoStream(args["video"]).start()
time.sleep(1.0)def shape_to_np(shape, dtype="int"):# 创建68*2coords = np.zeros((shape.num_parts, 2), dtype=dtype)# 遍历每一个关键点# 得到坐标for i in range(0, shape.num_parts):coords[i] = (shape.part(i).x, shape.part(i).y)return coords# 遍历每一帧
while True:# 预处理frame = vs.read()[1]if frame is None:break(h, w) = frame.shape[:2]width=1200r = width / float(w)dim = (width, int(h * r))frame = cv2.resize(frame, dim, interpolation=cv2.INTER_AREA)gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 检测人脸rects = detector(gray, 0)# 遍历每一个检测到的人脸for rect in rects:# 获取坐标shape = predictor(gray, rect)shape = shape_to_np(shape)# 分别计算ear值leftEye = shape[lStart:lEnd]rightEye = shape[rStart:rEnd]leftEAR = eye_aspect_ratio(leftEye)rightEAR = eye_aspect_ratio(rightEye)# 算一个平均的ear = (leftEAR + rightEAR) / 2.0# 绘制眼睛区域leftEyeHull = cv2.convexHull(leftEye)rightEyeHull = cv2.convexHull(rightEye)cv2.drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1)cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1)# 检查是否满足阈值if ear < EYE_AR_THRESH:COUNTER += 1else:# 如果连续几帧都是闭眼的,总数算一次if COUNTER >= EYE_AR_CONSEC_FRAMES:TOTAL += 1# 重置COUNTER = 0# 显示cv2.putText(frame, "Blinks: {}".format(TOTAL), (10, 30),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)cv2.putText(frame, "EAR: {:.2f}".format(ear), (300, 30),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)cv2.imshow("Frame", frame)key = cv2.waitKey(10) & 0xFFif key == 27:breakvs.release()
cv2.destroyAllWindows()

  

OpenCV计算机视觉实战

唐宇迪老师的课程讲的挺好的 就是贵了点

课程目录

01课程简介与环境配置

02图像基本操作

03阈值与平滑处理

04图像形态学操作

05图像梯度计算

06边缘检测

07图像金字塔与轮廓检测

08直方图与傅里叶变换

09项目实战-信用卡数字识别

10项目实战-文档扫描OCR识别

11图像特征-harris

12图像特征-sift

13案例实战-全景图像拼接

14项目实战-停车场车位识别

15项目实战-答题卡识别判卷

16背景建模

17光流估计

18Opencv的DNN模块

19项目实战-目标追踪

20卷积原理与操作

21项目实战-疲劳检测

pan。baidu。com/s/1Ng_-utB8BSrXlgVelc8ovw

转载于:https://www.cnblogs.com/zhaofuyun/p/11356955.html

OpenCV计算机视觉实战(Python版)资源相关推荐

  1. OpenCV计算机视觉实战(Python版)_002图像基本操作

    OpenCV计算机视觉实战(Python版) https://www.bilibili.com/video/BV1ct411F7Te?p=2 数据读取-图像 cv2.IMREAD_COLOR:彩色图像 ...

  2. OpenCV计算机视觉实战(Python版)_003阈值与平滑处理

    灰度图 import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %m ...

  3. OpenCV计算机视觉实战(Python版)_006边缘检测

    Canny边缘检测 使用高斯滤波器,以平滑图像,滤除噪声. 计算图像中每个像素点的梯度强度和方向. 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应. ...

  4. OpenCV计算机视觉实战(Python版)_005图像的梯度处理

    图像梯度-Sobel算子 img = cv2.imread('pie.png',cv2.IMREAD_GRAYSCALE) cv2.imshow("img",img) cv2.wa ...

  5. OpenCV计算机视觉实战(Python版)_004图像形态学处理

    形态学处理 腐蚀操作 img = cv2.imread('dige.png')cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows() ...

  6. OpenCV计算机视觉实战(Python)_09-项目实战:信用卡数字识别( Jupyter notebook实现)

    1.介绍 从一个银行卡中识别其中的银行卡号: 2. 流程 读图 , 灰度图 , 二值化 使用模板匹配方式对模板,以及输入图像进行轮廓检测(检测外轮廓). 得到当前轮廓的外接矩形. 将模板中的外接矩形切 ...

  7. OpenCV计算机视觉编程Python版

    http://download.csdn.net/download/u014036026/9823217 好清晰的中文版

  8. OpenCV计算机视觉实战(Python)_05-图像梯度处理

    图像梯度-Sobel算子 其计算梯度的过程为: sobel和scharr对应的参数信息: src – 输入图像.dst – 输出图像,与输入图像同样大小,拥有同样个数的通道. ddepth –输出图片 ...

  9. OpenCV计算机视觉实战(Python)| 10、项目实战:文档扫描OCR识别

    文章目录 简介 总结 1. 介绍 2. 流程 3. 程序 4. 知识点总结 简介 本节为<OpenCV计算机视觉实战(Python)>版第10讲,项目实战:文档扫描OCR识别,的总结. 总 ...

最新文章

  1. layui中laydate兼容ie_layui菜鸟教程--乐字节前端
  2. php 检测密码,php如何检测账号密码是否匹配
  3. 8086汇编-实验5(微调)-用栈实现数据交换位置
  4. Python 数据分析三剑客之 NumPy(四):字符串函数总结与对比
  5. 【VB.NET】测验题目Quiz2
  6. [python教程入门学习]就业寒冬,从拉勾招聘看Python就业前景
  7. TensorFlow 教程 --进阶指南--3.5线程和队列
  8. 第二:Java+MyBatis(深入学习)
  9. jmeter解决不同线程组之间传递参数问题
  10. Verilog实现UART串口收发器数字电路
  11. oracle crm客户关系管理资料下载_悟空CRM:使用CRM系统进行客户关系管理的要点...
  12. UIPickerView的使用
  13. 迅捷pdf虚拟打印机怎么安装使用
  14. 评价得分计算:确立权重的方法
  15. c# formApp的web browser的兼容性设置
  16. tp5.1 出现Class 'Qcloud\Sms\SmsSingleSender' not found(mac和windows没有,linux出现)
  17. MySQL数据库对象
  18. mysql的安全加固方法_MySQL数据库安全加固方法
  19. 著名专家托马斯·拉姆什评孙宇晨出任格林纳达常驻WTO代表
  20. 《C#零基础入门之百识百例》(三十三)方法参数 -- 位置命名参数 -- 求长方体体积

热门文章

  1. 对待棘手bug,新手与大牛的差距在哪里?
  2. 文档扫描OCR识别-1(python)
  3. SQL基础【一、SQL简介】
  4. 线上Java应用排查和诊断规范
  5. grep,sort,uniq 用法例子
  6. 远程桌面连接数超过最大限制解决方法
  7. oracle10g11g日志alter文件位置
  8. dbms_xplan.display_cursor 获取执行过的sql的执行计划
  9. Linux Shell 通配符、元字符、转义符使用实例介绍
  10. 0x13链表与邻接表之邻值查找