【Python】OpenCV-实时眼睛疲劳检测与提醒

实时眼睛疲劳检测与提醒

1. 引言

眼睛疲劳对于长时间使用电子设备的人群来说是一个常见的问题。为了帮助用户及时发现眼睛疲劳并采取相应的措施,本文介绍了一个实时眼睛疲劳检测与提醒系统的简单实现。使用了OpenCV、MediaPipe以及Playsound库,通过摄像头捕捉实时图像,检测眼睛疲劳并在需要时播放提示音。

2. 实现

2.1 实时视频显示

首先,通过OpenCV库捕获摄像头实时视频,显示在窗口中。

import cv2cap = cv2.VideoCapture(0)
while cap.isOpened():ret, frame = cap.read()if ret is False:breakcv2.imshow("frame", frame)cv2.waitKey(10)

2.2 眼睛疲劳检测

接下来,使用MediaPipe库中的FaceMesh模型,获取面部特征点,从中提取左右眼的特定特征点。通过计算眼睛的EAR(Eye Aspect Ratio),判断眼睛是否闭合。

import cv2
import mediapipe as mp
import numpy as np# 初始化FaceMesh
face_mesh = mp.solutions.face_mesh.FaceMesh()cap = cv2.VideoCapture(0)
sleep_frame_count = 0
while cap.isOpened():ret, frame = cap.read()if ret is False:breakrgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)result = face_mesh.process(rgb_frame)if result.multi_face_landmarks:for face in result.multi_face_landmarks:# 获取眼睛特定特征点right_eye_landmark_ids = [362, 385, 387, 263, 373, 380]left_eye_landmark_ids = [33, 160, 158, 133, 153, 144]right_eye_landmarks = []left_eye_landmarks = []for id, landmark in enumerate(face.landmark):if id in right_eye_landmark_ids:x = int(landmark.x * frame.shape[1])y = int(landmark.y * frame.shape[0])cv2.circle(frame, [x, y], 1, [0, 255, 0])right_eye_landmarks.append(np.array([x, y]))if id in left_eye_landmark_ids:x = int(landmark.x * frame.shape[1])y = int(landmark.y * frame.shape[0])cv2.circle(frame, [x, y], 1, [0, 255, 0])left_eye_landmarks.append(np.array([x, y]))# 计算眼睛的EARdef EAR(landmarks):d1 = np.linalg.norm(landmarks[1] - landmarks[5])d2 = np.linalg.norm(landmarks[2] - landmarks[4])d3 = np.linalg.norm(landmarks[0] - landmarks[3])return (d1 + d2) / d3 * 0.5left_ear = EAR(left_eye_landmarks)right_ear = EAR(right_eye_landmarks)# 判断眼睛是否闭合if (left_ear + right_ear) / 2 < 0.85:sleep_frame_count += 1if sleep_frame_count >= 30:sleep_frame_count = 0print("不要睡觉")# 在新线程中播放提示音t = Thread(target=play_sound).start()cv2.imshow("frame", frame)cv2.waitKey(10)

2.3 提示音播放

当检测到眼睛疲劳时,通过Playsound库在新线程中播放提示音。

from threading import Thread
from playsound import playsounddef play_sound():playsound("tip.mp3")

3. 结论

通过上述代码,展示了一个基于OpenCV、MediaPipe和Playsound的简单实时眼睛疲劳检测与提醒系统。通过面部特征点的获取和EAR的计算,系统能够及时识别用户的眼睛状态,并在需要时通过提示音提醒用户。这个简单而有效的系统可以用于提高长时间使用电子设备的用户对眼睛疲劳的警觉。

提示音下载:https://sc.chinaz.com/yinxiao/230223359280.htm

代码参考源自:Shady的混乱空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器ECS价格表出炉——阿里云

2024年阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…

docker (十一)-进阶篇-docker-compos最佳实践部署zabbix

一 部署docker环境 关闭防火墙、selinux、开启docker&#xff0c;并设置开机自启动 注意点&#xff1a;docker部署的时候&#xff0c;bip要指定&#xff0c;不然会导致虚拟机ip和容器ip冲突&#xff0c;ssh连不上虚拟机 部署请参考 docker &#xff08;二&#xff09;-yum…

OpenHarmony下GN语法普法

OpenHarmony下GN语法普法 引言 前面一直在折腾怎么移植&#xff0c;怎么编写&#xff0c;尼玛忘了搞最基本的GN语法了。这不必须给安排上&#xff01; 一.GN表达式语言和GN作用域 GN 是简单的动态类型的命令式语言&#xff0c;其最终目的只是产生声明性的 Ninja 规则。一切都…

【python】windowslinux系统python的安装

一、python官网及下载路径 官网地址&#xff1a;Welcome to Python.org 下载路径&#xff1a;Download Python | Python.org ​​​​​​​ linux源码安装包下载&#xff1a; windows二进制安装包下载&#xff1a; 二、Linux如何安装python 2.1 单版本安装 以安装python…

Codeforces Beta Round 15 C. Industrial Nim Nim,1~n的异或和

Problem - 15C - Codeforces 目录 Nim游戏&#xff1a; 1~n的异或和&#xff1a; 代码&#xff1a; Nim游戏&#xff1a; n个石头堆&#xff0c;谁最后没得取谁败 我用的异或思考法&#xff0c;对所有堆异或。开局异或和为0的败 最后全是0&#xff0c;异或完也是0. //最…

芋道----如何在自己的业务模块中添加导入导出功能

导出不再多做介绍&#xff0c;代码自动生成就会有&#xff0c;这里介绍一下如何实现导入&#xff1a; 一、首先介绍前台&#xff1a; 1&#xff09;页面上添加导入按钮 <el-buttontype"primary"plainicon"el-icon-download"size"mini"click…

DDI中的自适应子结构

SA-DDI提出了一种子结构感知图神经网络&#xff0c;一种配备了子结构注意力机制和用于DDI预测的子结构-子结构交互模块&#xff08;SSIM&#xff09;的消息传递神经网络。具体而言&#xff0c;基于分子中官能团的尺寸和形状通常是不规则的化学直觉&#xff0c;子结构注意力被设…

线阵相机之帧超时

1 帧超时的效果 在帧超时时间内相机若未采集完一张图像所需的行数&#xff0c;则相机会直接完成这张图像的采集&#xff0c;并自动将缺失行数补黑出图&#xff0c;机制有以下几种选择&#xff1a; 1. 丢弃整张补黑的图像 2. 保留补黑部分出图 3.丢弃补黑部分出图

USACO 2024年2月铜组 PALINDROME GAME(博弈)

第一题&#xff1a;PALINDROME GAME 标签&#xff1a;思维、博弈 题意&#xff1a;给定一堆石子&#xff0c;有 S S S个&#xff08; 1 ≤ S ≤ 1 0 1 0 15 1≤S≤10^{10^{15}} 1≤S≤101015&#xff09;&#xff0c; B e s s i e Bessie Bessie和 E l s i e Elsie Elsie轮流…

混子文章|蓝桥杯一题 -平方差

题目考点: 平方差 ,平方差奇偶关系 代码 #include<bits/stdc.h> #define Run 0 #define endl "\n" #define N 100005 using unl __int128_t; using ll long long; using namespace std; class Solution { public: void slove() {int sum 0;int L, R; cin &…

内存计算研究进展-针对机器学习的近数据计算架构

针对机器学习的近数据计算架构代表性工作有&#xff1a; Georgia Institute of Technology的BSSync (bounded staled sync) 和 Neurocube&#xff0c;Advanced Micro Devices 的 CoML&#xff0c;具体如下。 1 BSSync BSSync指出&#xff0c;在并行实现的机器学习应用中&#…

马斯洛激励理论

马斯洛激励理论——摘抄 马斯洛理论&#xff0c;也被称为马斯洛需求层次理论&#xff0c;是由美国心理学家亚伯拉罕马斯洛在1943年提出的。它是一种心理学中的激励理论&#xff0c;描绘了人类需求的五级模型&#xff0c;通常被描绘成金字塔内的等级。 从层次结构的底部向上&am…

代码随想录算法训练营DAY21 | 二叉树 (9)

一、LeetCode 669 修建二叉搜索树 题目链接&#xff1a;669.修建二叉搜索树https://leetcode.cn/problems/trim-a-binary-search-tree/description/ 思路&#xff1a;递归三部曲-定参数、返回值-定终止条件-定单层递归逻辑 class Solution {public TreeNode trimBST(TreeNode …

Sora了解资料

一、基本介绍 1.1sora 在 2024 年 2 月 16 日&#xff0c;Open AI 宣布推出全新的生成式人工智能模型“Sora”。据了解&#xff0c;通过文本指令&#xff0c;Sora 可以直接输出长达 60 秒的视频&#xff0c;并且包含高度细致的背景、复杂的多角度镜头&#xff0c;以及富有情感…

Prometheus+TDengine集群实现监控体系高可用

背景 为避免再次出现因Prometheus宕机导致业务无法查看历史数据受到影响&#xff0c;准备将Prometheus架构从单节点方式升级为高可用集群方式并将后端存储由本地存储改为远端分布式时序数据库存储。分布式时序数据库采用国产数据库TDengine。 架构 解释&#xff1a;虚线代表P…

Tuxera NTFS软件2024免费版本如何下载?

当然&#xff0c;以下是关于Tuxera NTFS的更多信息&#xff1a; Tuxera NTFS2024下载如下:https://wm.makeding.com/iclk/?zoneid58824 1. 易于使用和管理&#xff1a; Tuxera NTFS的界面设计简洁直观&#xff0c;用户无需复杂的设置和配置即可轻松上手。无论是对于普通用户…

机器视觉【3】非线性求解相机几何参数

线性求解相机几何参数的缺点 上一章节介绍学习了&#xff08;DLT&#xff09;线性求解相机几何参数&#xff0c;了解到线性求解法当中比较明显的缺点&#xff1a; 没有考虑到镜头畸变的影响不能引入更多的约束条件融入到DLT算法当中优化最关键的是&#xff0c;代数距离并不是…

Sora给中国AI带来的真实变化

OpenAI的最新技术成果——文生视频模型Sora&#xff0c;在春节假期炸裂登场&#xff0c;令海内外的AI从业者、投资人彻夜难眠。 如果你还没有关注到这个新闻&#xff0c;简单介绍一下&#xff1a;Sora是OpenAI使用超大规模视频数据&#xff0c;训练出的一个通用视觉模型&#x…

源 MySQL 5.7 Community Server 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

源 "MySQL 5.7 Community Server" 的 GPG 密钥已安装&#xff0c;但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 问题描述&#xff1a; 服务器上安装mysql时 或 执行更新mysql 安装包的时候&#xff0c;出现了报错&#xff0c;简单记录下解决方案 执行…

ClickHouse快速上手

简介 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS) 官网(https://clickhouse.com/docs/zh)给出的定义&#xff0c;其实没看懂 特性 ClickHouse支持一种基于SQL的声明式查询语言&#xff0c;它在许多情况下与ANSI SQL标准相同。使用时和MySQL有点相似&#…