python cv2的视频检测:睁眼闭眼
2019-08-29 10:39 冻雨冷雾 阅读(1763) 评论(1) 编辑 收藏 举报如题,想实现一个简单的根据摄像头的某一帧检测睁眼闭眼的功能。
初步的想法是:
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()
——————————————活在当下,首先就是要做好当下的事.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架