python实时打哈欠检测_川川菜鸟的博客-程序员宅基地_哈欠检测

技术标签: python  机器视觉  

效果

在这里插入图片描述

基本思路

  1. 在 OpenCV 中使用VideoCapture方法初始化视频渲染对象
  2. 创建灰度图像
  3. 导入预训练模型,识别脸部和人脸标志
  4. 计算上唇和下唇距离(其它类似)
  5. 创建唇边距离的If条件,满足则是打哈欠,不满足则只是简单的张嘴
  6. 显示帧/图像

部分源码

  suc, frame = cam.read()
    # 读取不到退出
    if not suc:
        break

    # ---------FPS------------#
    ctime = time.time()
    fps = int(1 / (ctime - ptime))
    ptime = ctime
    cv2.putText(frame, f'FPS:{fps}', (frame.shape[1] - 120, frame.shape[0] - 20), cv2.FONT_HERSHEY_PLAIN, 2,
                (0, 200, 0), 3)

    # ------检测人脸------#
    # 转为灰度
    img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_model(img_gray)
    for face in faces:
        # 检测人脸,框起来-#
        x1 = face.left()
        y1 = face.top()
        x2 = face.right()
        y2 = face.bottom()
        # print(face.top())
        cv2.rectangle(frame, (x1, y1), (x2, y2), (200, 0, 00), 2)

        # ----------检测人脸标注-----------#
        shapes = landmark_model(img_gray, face)
        shape = face_utils.shape_to_np(shapes)

        # -------检测上下唇--------#
        lip = shape[48:60]
        cv2.drawContours(frame, [lip], -1, (0, 165, 255), thickness=3)

        # -------计算上下唇距离-----#
        lip_dist = cal_yawn(shape)
        # 打印距离
        # print(lip_dist)
        # 大于设定值,则认定是打哈欠
        if lip_dist > yawn_thresh:
            cv2.putText(frame, f'User Yawning!', (frame.shape[1] // 2 - 170, frame.shape[0] // 2),
                        cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 200), 2)

    # 按字母q退出
    cv2.imshow('Webcam', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

完整项目

点击下载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46211269/article/details/124105198

智能推荐

好资源推荐-经典技术文章集锦!!!_Black-rabbit的博客-程序员宅基地

分享一些不错的技术文章给大家哦!希望对大家有些帮助!1.使用多线程的利弊http://g.csdn.net/52462632.HTML5时代的Web应用开发http://g.csdn.net/52462763.[VisualC++]游戏开发笔记四十五浅墨DirectX教程十三深度测试和Z缓存专场http://g.csdn.net/52466264.游戏后台的快速开发http://g...

NLP面试复盘 | 阿里/腾讯/头条/paypal/快手_kaiyuan_sjtu的博客-程序员宅基地

作者|ray-95整理|NewBeeNLP周末愉快!来看几篇面筋涨涨经验~写在前面本人学渣一枚,春招实习有幸过了几家大厂,在此期间得到了很多帮助,也特意分享一下自己的经验,希望能...

博弈论总结_weixin_33743248的博客-程序员宅基地

以下是网上收集的关于组合博弈的资料汇总:有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一...

docker部署私有镜像仓库_hzj15626479278的博客-程序员宅基地

docker部署私有镜像仓库1.背景容器镜像的管理主要围绕镜像仓库(Registry)来进行。在实际应用中,无论开发人员或CI系统发布镜像,还是测试人员或运维人员下载镜像,都要通过镜像仓库来完成。镜像仓库分为公有仓库和私有仓库两种,例如Docker Hub就属于公有仓库,公有仓库的优点是可以直接使用,无须自己维护。但考虑到访问效率和镜像安全等方面的原因,企业可构建自己内部的私有仓库,供内部员工...

IOS中的Block在C++中的运用_MOKA的博客-程序员宅基地_block c++

1.iOS中block基本demoA视图->B视图,B视图传值给A视图A视图的代码片段:[cpp] view plain copy - (IBAction)action2OtherView:(id)sender  {      MyView *myView = [[MyView alloc] init];      myView.func = ^(int x

phpcms过滤php,苗景云的博客_Leo瓜牛的博客-程序员宅基地

phpcms V9填写转向链接,如果链接中包含#会被过滤掉,解决方案如下:打开phpcms/modle/content_model.class.php,搜索linkurl,找到附近的str_replace函数,将其中的 '#', 删除。一共三处!第一处98行//更新URL地址if($data['islink']==1){$urls[0]=trim_script($_POST['linkur...

随便推点

阅读ASCII_huaiyiheyuan的博客-程序员宅基地

一、第一部分 2.1.2 : 类型转换不是很懂 读ASCII表 先读 竖 、横 例如:A , 二进制是 0100 0001 十进制是 2^6 + 1 = 65 十六进制 41F : 二进制是 0100 0110 十进制是 2^6 + 2^2+2=70 十六进制 46十六机制转十进制 , 46 ,4 * 16^1 + 6=7

【spring原理前置测试篇】三级缓存及循环依赖_GAMESLI-GIS的博客-程序员宅基地

1.循环问题(使用一级缓存和实例化后就加入到一级缓存来解决)public class AnnotationConfigApplicationContext{ private Map<String,BeanDefinition> beanDefinitonMap = new LinkedHashMap<String,BeanDefinition>(); private final Map<String,Object> singletonObjects =

Talend open studio如何调试代码_weixin_34307464的博客-程序员宅基地

Talend将设计的模型直接生成了java代码,可以直接对模型生成的java代码进行调试,排查问题比kettle灵活很多, 设计的模型如下: 生成的代码如下: 点击 Java Debug进入调试模式,可以设置断点,单步跟进,和eclipse一模一样的调试,非常方便:         ...

hdu5365_Think_Idea的博客-程序员宅基地

题目链接:点击打开链接题目意思:在平面中给出一些点(这些点的坐标都为整数),从中选取一些点构成正三角形、正四边形、正五边形、正六边形,问一共有多少种方案?解题思路:1、题目给出的n2、但是正五边形,正六边形判断起来感觉很麻烦,而且枚举6个点肯定会超时,所以比赛时没有思路3、解题报告中指出:地球人都知道整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个

mysql binlog pid_Mysql binlog设置_weixin_30562757的博客-程序员宅基地

一:Binlog文件信息1. binlog基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;2.作用:MySQL的作用类似于Oracle的归档日志,可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)3. binglo...

[转] 这样学英语三个月超过你过去学三年_weixin_30364325的博客-程序员宅基地

本文作者三年间从四级勉强及格到高级口译笔试210,口试232。找工作面试时给其口试的老外考官听了一分钟就说你的英语不用考了。虽不敢说方法一定是最好的,但从现在开始随便谁不要再去找学习资料,每天花两个钟头照说的做,坚持三个月的提高会超过你过去三年。听:网上比较有代表性的论坛是普特www.putclub.com上面的听力资源很丰富,沪江www.hjenglish.com和旺旺www.wwenglish...