zoukankan      html  css  js  c++  java
  • python cv2的视频检测:睁眼闭眼

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

    初步的想法是:

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

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

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

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

    操作过程基本明了。

    代码放上:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    import cv2 as cv
    #import time
    
    
    # 哈尔级联分类器
    fd = cv.CascadeClassifier(r'C:Userswenzhe.tianDesktop闭眼识别haarcascade_frontalface_alt.xml')
    ed = cv.CascadeClassifier(r'C:Userswenzhe.tianDesktop闭眼识别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()
  • 相关阅读:
    Linux/ visual studio 编译使用Poco
    无法安装 golang.org/x/tools/的库
    大牛blog汇总
    Redis整合Spring结合使用缓存实例
    js增加收藏
    iOS学习笔记12-网络(一)NSURLConnection
    Kick the ball!(dfs)湖南省赛第十届
    windows程序设计——飞机大战笔记(Access数据库的使用)
    DataGridView.DataSource= list(Of T)
    面试之SQL(1)--选出选课数量>=2的学号
  • 原文地址:https://www.cnblogs.com/techs-wenzhe/p/11378163.html
Copyright © 2011-2022 走看看