标签:Python,打哈欠,检测
效果图
基本思路
在 OpenCV 中使用VideoCapture方法初始化视频渲染对象
创建灰度图像
导入预训练模型,识别脸部和人脸标志
计算上唇和下唇距离(其它类似)
创建唇边距离的If条件,满足则是打哈欠,不满足则只是简单的张嘴
显示帧/图像
部分源码
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
来源:https://blog.csdn.net/weixin_46211269/article/details/124105198


猜你喜欢
- 学习总结(1)和上一讲的模型训练是类似的,只是在线性模型的基础上加个sigmoid,然后loss函数改为交叉熵BCE函数(当然也可以用其他函
- 1. 实验目的掌握最小二乘法求解(无惩罚项的损失函数)、掌握加惩罚项(2 范数)的损失函数优化、梯度下降法、共轭梯度法、理解过拟合、克服过拟
- 一 例子现在,讲述一个真实的故事!故事一定是伴随着赵忠祥老师的声音开始的,雨季就要来临了,又到了动物们 * 的季节了...还记得,之前发生的作
- 垃圾分类是现代城市中越来越重要的问题,通过垃圾分类可以有效地减少环境污染和资源浪费。随着人工智能技术的发展,使用机器学习模型进行垃圾分类已经
- phpstorm配置debug环境众所周知,在渗透测试进行代码审计的时候,往往要审计代码的执行过程,亦或是在开发php项目的时候,需要了解代
- 什么是闭包闭包(Closure)是一种函数,它被定义在另一个函数的内部,并且可以访问该函数作用域中的变量,即使该函数已经执行完毕并被销毁。换
- 首先下载源tar包可利用linux自带下载工具wget下载,如下所示:wget http://www.python.org/ftp/pyth
- 简单的说,GUI编程就是给程序加上图形化界面.python的脚本开发简单,有时候只需几行代码就能实现丰富的功能,而且python本身是跨平台
- 本文实例汇总了python求列表交集的方法。分享给大家供大家参考。具体方法如下:交集对于给定的两个集合A 和 集合B 的交集是指含有所有既属
- 本文实例为大家分享了python编写实现抽奖器的具体代码,供大家参考,具体内容如下# coding=utf-8import sysimpor
- JavaScript在讲解用 Ts 遍历一个对象之前, 我们先说说 在 Js 中怎么实现, for...in、Object.keys, 一个
- 例题:假设你获取了250部电影的时长(列表a中),希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)
- 本文实例讲述了JavaScript中callee和caller的区别与用法。分享给大家供大家参考,具体如下:1.callee在函数的内部,有
- 一、简介 XML(eXtensible Markup Languag
- 函数:string.join()Python中有join()和os.path.join()两个函数,具体作用如下: &
- 在开发过程中,收到这样一个问题反馈,在网站上传 100 MB 以上的文件经常失败,重试也要等老半天,这就难为需要上传大规格文件的用户了。那么
- 内容摘要:使用MySQL服务的一些经验,主要从以下几个方面考虑的MySQL服务规划设计。对于高负载站点来说PHP和MySQL运行在一起(或者
- 简述1.pythonpython作为一门解释型脚本语言,它有三种发布方式:文件 : 源码文件,运行需要使用者安装Python环境并且安装依赖
- 我们在前面已经分别介绍了如何在spring Boot中使用JPA以及如何在Spring Boot中输出REST资源。那么关于数据库访问还有一
- i前端:nput_test.html<!DOCTYPE html><html><head lang="