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

初步的想法是:

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. ubuntu下mysql数据库存储路径修改

    一.安装mysql ubuntu系统安装配置APT源,apt install mysql-server mysql-client 二.查看安装端口情况 sudo netstat -tap | grep ...

  2. NMS(非极大值抑制算法)

    目的:为了消除多余的框,找到最佳的物体检测的位置 思想: 选取那些领域里分数最高的窗口,同时抑制那些分数低的窗口 Soft-NMS

  3. VC++获取CPU序列号 CPU ID

    CString strCPUID; unsigned long s1, s2; __asm{ mov eax, 01h xor edx, edx cpuid mov s1, edx mov s2, e ...

  4. 【MAC】安装chrome浏览器

    step1:下载dmg安装包 chrome下载地址 点击[下载Chrome] step2:安装chrome 下载好googlechrome.dmg文件后,像其它程序一样安装就可以了 打开访达--> ...

  5. WPF prism 类、属性和方法的导入和导出

    学习Prism一定要掌握依赖注入的应用,只有了解了Prism的依赖注入才能更好的使用Prism提升应用开发的架构. 首先说明Prism依赖注入有两种方式及MEF和Unity ,在Prism中是两个没有 ...

  6. 阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备

    适应配置的方式解决我们刚才的编码操作 -dist结尾的就是spring 的开发包 解压好的 这里面是约束 libs是扎包 三个为一组,实际上只有21个 自己在使用需要导入jar包的时候,选择这种没有任 ...

  7. 二十一:jinja2之模板继承

    模板继承可以把有共性的一些代码抽出来放到父模板中,其他需要次特性的文件继承模板即可 在jinja2中,使用extends来继承定义好的模板,使用{% block 位置名%} {% endblock % ...

  8. Linux 查找当前目录下 包含特定字符串 的所有文件

    使用 Linux 经常会遇到这种情况:只知道文件中包含某些特定的字符串,但是不知道具体的文件名.需要根据“特定的字符串”反向查找文件. 示例(路径文件如下): ./miracle/luna/a.txt ...

  9. DJANGO MODEL FORMSETS IN DETAIL AND THEIR ADVANCED USAGE

    Similar to the regular formsets, Django also provides model formset that makes it easy to work with ...

  10. Unity3D 旋转

    Unity有两种设置物体旋转的方式,一种时用Rotate()函数来旋转,另一种时直接构造目标Quaternion来直接赋予rotation. 好吧,不知到写什么,各种旋转和unity2D差不多.在国内 ...