OpenCV计算机视觉实战(Python版)资源
疲劳检测
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 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.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*2
- coords = 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=1200
- r = 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 += 1
- else:
- # 如果连续几帧都是闭眼的,总数算一次
- 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) & 0xFF
- if key == 27:
- break
- vs.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
OpenCV计算机视觉实战(Python版)资源的更多相关文章
- 移动端自动化测试Appium 从入门到项目实战Python版☝☝☝
移动端自动化测试Appium 从入门到项目实战Python版 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 说到APP自动化测试,Appium可是说是非常流 ...
- 移动端自动化测试appium 从入门到项目实战Python版✍✍✍
移动端自动化测试appium 从入门到项目实战Python版 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程 ...
- 移动端自动化测试Appium 从入门到项目实战Python版
移动端自动化测试Appium 从入门到项目实战Python版 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...
- python 库资源大全
偶然的机会翻到这篇文章,很全面,来源: Python 资源大全中文版 哪些 Python 库让你相见恨晚? 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 pyth ...
- python中文资源大全
Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...
- 第一弹:超全Python学习资源整理(入门系列)
随着人工智能.大数据的时代到来,学习Python的必要性已经显得不言而喻.我经常逛youtube,发现不仅仅是以编程为职业的程序员,证券交易人员,生物老师,高级秘书......甚至许多自由撰稿人,设计 ...
- OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token
一.access_token简介 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等, 开 ...
随机推荐
- 学到了林海峰,武沛齐讲的Day25-完
@property @classmethod @staticmethod 类的继承
- web+文件夹上传
一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框 ...
- PHP全栈学习笔记25
<?php /* *@Author: 达叔小生 **/ header("content-type:image/png"); //设置页面编码 $num = $_GET['nu ...
- laravel-china 镜像停止服务
php 的很多开发都会用到composer.然后国内的镜像又慢,很多人会选择用laravel-china的镜像. 之前一直用的很好.今天突然发现不能composer update.出现报错.WTF!! ...
- java 标准日期格式
public static void main(String[] argv) { // 使用默认时区和语言环境获得一个日历 Calendar cale = Calendar.getInstance() ...
- 列出python中可变数据类型和不可变数据类型,并简述原理
可变类型(mutable):变量进行append.+=等这种操作后 == 改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即 ...
- 前端性能测试工具Chrome performance
页面加载速度慢,到底是多少秒,瓶颈在哪里? 前端性能工具Chrome performance 结合F12,基本可以搞定. 一.Chrome performance 1.shift+ctrl+N进入谷歌 ...
- dsu on tree学习笔记
前言 一次模拟赛的\(T3\):传送门 只会\(O(n^2)\)的我就\(gg\)了,并且对于题解提供的\(\text{dsu on tree}\)的做法一脸懵逼. 看网上的其他大佬写的笔记,我自己画 ...
- wireshark新手导航
本篇教你如何开始使用Wireshark.开始本篇之前,请先已经安装完wireshark 3.0.0. 初始界面 启动wireshark,可以看到程序界面主要由以下几部分组成: 窗口标题-window ...
- Java-JVM 锁优化
synchronized 的实现方式是用 Monitor 进行加锁,这是一种互斥锁,为了表示他对性能的影响我们称之为重量级锁. Java 的线程是映射到操作系统原生线程之上的,要阻塞或唤醒一个线程就需 ...