如题,想实现一个简单的根据摄像头的某一帧检测睁眼闭眼的功能。

初步的想法是:

1. cv2调用计算机摄像头,读取某一帧的画面.

2. 将该画面作为 哈尔-人脸分类器的输入接口,根据分类器结果返回分类的结果区域。

3. 对结果区域图像裁剪,作为哈尔-眼睛分类器的输入接口。

4. 若在人脸分类器的输出图像上无法检测到眼睛的分类器即确认为闭眼状态并给予提示。

操作过程基本明了。

代码放上:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import cv2 as cv
#import time # 哈尔级联分类器
fd = cv.CascadeClassifier(r'C:\Users\wenzhe.tian\Desktop\闭眼识别\haarcascade_frontalface_alt.xml')
ed = cv.CascadeClassifier(r'C:\Users\wenzhe.tian\Desktop\闭眼识别\haarcascade_eye_tree_eyeglasses.xml')
#nd = cv.CascadeClassifier('../../data/haar/nose.xml')
vc = cv.VideoCapture(0) while True:
frame = vc.read()[1]
faces = fd.detectMultiScale(frame, 1.3, 5)
for l, t, w, h in faces:
a, b = int(w / 2), int(h / 2)
cv.ellipse(frame, (l+a, t+b), (a, b), 0, 0, 360, (255, 0, 255), 2)
face = frame[t:t+h, l:l+w] eyes = ed.detectMultiScale(face, 1.3, 5)
for l, t, w, h in eyes:
a, b = int(w / 2), int(h / 2)
cv.ellipse(face, (l+a, t+b), (a, b), 0,0, 360, (0, 255, 0), 2) # noses = nd.detectMultiScale(face, 1.3, 5)
# for l, t, w, h in noses:
# a, b = int(w / 2), int(h / 2)
# cv.ellipse(face, (l a, t b), (a, b), 0,
# 0, 360, (255, 0, 0), 2)
# a = 'close eyes!!' if len(eyes) != 0:
cv.destroyWindow('close eyes!!')
# cv.moveWindow('open eyes',300,300)
cv.imshow('open eyes!!', frame) else:
cv.destroyWindow('open eyes!!')
# time.sleep(1)
# cv.moveWindow('close eyes',300,300)
cv.imshow('close eyes!!', frame) if cv.waitKey(1) == ord(' '):
break
vc.release()
cv.destroyAllWindows()

python cv2的视频检测:睁眼闭眼的更多相关文章

  1. python cv2获取视频第一帧,并转码

    安装Python库 sudo pip install opencv-python 或者sudo pip install opencv-python -i https://pypi.douban.com ...

  2. 30行Python代码实现人脸检测

    参考OpenCV自带的例子,30行Python代码实现人脸检测,不得不说,Python这个语言的优势太明显了,几乎把所有复杂的细节都屏蔽了,虽然效率较差,不过在调用OpenCV的模块时,因为模块都是C ...

  3. 深度学习 + OpenCV,Python实现实时视频目标检测

    使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加入原有的目标检测功能. 在本文中我们将学习如何扩展原有的目标检测项 ...

  4. Python opencv提取视频中的图片

    作者:R语言和Python学堂链接:https://www.jianshu.com/p/e3c04d4fb5f3 这个函数就是本文要介绍的video2frames()函数,功能就是从视频中提取图片,名 ...

  5. python cv2截取不规则区域图片

    知识掌握 cv2.threshold()函数: 设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点. Python: cv2.thresho ...

  6. Photoshop Elements2020强势来袭,教你三秒钟拯救闭眼照

    Photoshop Elements2020强势来袭,一系列的黑科技让设计师和路人都惊叹不已!若某人的闭眼成为一张集体照的败笔,那该如何挽回? 想要挽救闭眼照?听起来很高大上,很困难?不,Photos ...

  7. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

  8. python sqlite3 入门 (视频讲座)

    python sqlite3 入门 (视频讲座) an SQLite mini-series! - Simple Databases with Python 播放列表: YouTube https:/ ...

  9. 清除ie10+浏览器的input输入框后面会出现的x号和闭眼logo

    x号:::-ms-clear{display:none;} 闭眼logo: ::-ms-reveal{display:none;} tips:如果在外部引用的css里面没有作用,可以在写本页面的< ...

随机推荐

  1. Android 带你读懂事件分发

    工作有一段时间,有必要掌握事件传递的机制,最近研究了一下,记录下心得.1 Android中的事件 android中触摸事件比较多,封装中MotionEvent类中,点击.触摸.滑动是我们常用的事件 M ...

  2. sigmoid function的直观解释

    Sigmoid function也叫Logistic function, 在logistic regression中扮演将回归估计值h(x)从 [-inf, inf]映射到[0,1]的角色. 公式为: ...

  3. React之生命周期函数

    1.新增知识点 /* https://reactjs.org/docs/react-component.html React生命周期函数: 组件加载之前,组件加载完成,以及组件更新数据,组件销毁. 触 ...

  4. layui给select下拉框赋值

    转: layui给select下拉框赋值 layui给select下拉框赋值 //重新渲染表单函数 function renderForm() { layui.use('form', function ...

  5. unieap 建库

    create tablespace unieap datafile 'unieap.dbf' size 100M reuse autoextend on next 50M;1. 2.drop user ...

  6. 使用putty远程登录Ubuntu时,报Network error:Connection refused错误及解决(记录)

    putty远程登录Ubuntu,弹出Network error:Connection refused的错误提示框,就是因为Ubuuntu没有安装ssh服务.执行命令: sudo apt-get ins ...

  7. C#学习笔记四(LINQ,错误和异常,异步编程,反射元数据和动态编程)

    LINQ 1.使用类似的数据库语言来操作集合? 错误和异常 异步编程 1.异步和线程的区别: 多线程和异步操作两者都可以达到避免调用线程阻塞的目的.但是,多线程和异步操作还是有一些区别的.而这些区别造 ...

  8. 剑指OFFER数据结构与算法分类

    目录 数据结构 算法 数据结构 数组 有序二维数组查找 数组相对位置排序 数组顺时针输出 把数组排成最小的数 数组中的逆序对 扑克牌顺子 数组中重复的数字 构建乘积数组 链表 链表反向插入ArrayL ...

  9. vue如何实现热更新

    我们都知道,对于node来说,前端vue代码的迭代节奏是很快的,可能一周要迭代几次,但是node的迭代却没那么平凡,可能一周更新一次甚至更久,那么为了node服务的稳定,减少node服务的发布次数,是 ...

  10. 【VS开发】字符串进制等转换关系及方法

    C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子:# include <stdio.h># in ...