疲劳检测_驾驶员疲劳检测设计Opencv完整代码实战

第一步:疲劳检测实现原理介绍

1.检测到人脸

2.获取人脸关键点

3.根据人脸关键点判断脸部的情况

更加详细的介绍可以参考这篇博客:

疲劳检测-闭眼检测(详细代码教程)_驾驶员疲劳检测设计完整代码-CSDN博客

第二步:代码展示

# 从视频流循环帧 while True: # 第五步:进行循环,读取图片,并对图片做维度扩大,并进灰度化 ret, frame = cap.read() frame = imutils.resize(frame, width=720) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 第六步:使用detector(gray, 0) 进行脸部位置检测 rects = detector(gray, 0) # 第七步:循环脸部位置信息,使用predictor(gray, rect)获得脸部特征位置的信息 for rect in rects: shape = predictor(gray, rect) # 第八步:将脸部特征信息转换为数组array的格式 shape = face_utils.shape_to_np(shape) # 第九步:提取左眼和右眼坐标 leftEye = shape[lStart:lEnd] rightEye = shape[rStart:rEnd] # 嘴巴坐标 mouth = shape[mStart:mEnd] # 第十步:构造函数计算左右眼的EAR值,使用平均值作为最终的EAR leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 # 打哈欠 mar = mouth_aspect_ratio(mouth) # 第十一步:使用cv2.convexHull获得凸包位置,使用drawContours画出轮廓位置进行画图操作 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convexHull(rightEye) cv2.drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) mouthHull = cv2.convexHull(mouth) cv2.drawContours(frame, [mouthHull], -1, (0, 255, 0), 1) # 第十二步:进行画图操作,用矩形框标注人脸 left = rect.left() top = rect.top() right = rect.right() bottom = rect.bottom() cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 1) ''' 分别计算左眼和右眼的评分求平均作为最终的评分,如果小于阈值,则加1,如果连续3次都小于阈值,则表示进行了一次眨眼活动 ''' # 第十三步:循环,满足条件的,眨眼次数+1 if ear < EYE_AR_THRESH: # 眼睛长宽比:0.2 COUNTER += 1 else: # 如果连续3次都小于阈值,则表示进行了一次眨眼活动 if COUNTER >= EYE_AR_CONSEC_FRAMES: # 阈值:3 TOTAL += 1 # 重置眼帧计数器 COUNTER = 0 # 第十四步:进行画图操作,同时使用cv2.putText将眨眼次数进行显示 cv2.putText(frame, "Faces: {}".format(len(rects)), (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "COUNTER: {}".format(COUNTER), (150, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "EAR: {:.2f}".format(ear), (300, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "Blinks: {}".format(TOTAL), (450, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 0), 2) ''' 计算张嘴评分,如果小于阈值,则加1,如果连续3次都小于阈值,则表示打了一次哈欠,同一次哈欠大约在3帧 ''' # 同理,判断是否打哈欠 if mar > MAR_THRESH: # 张嘴阈值0.5 mCOUNTER += 1 cv2.putText(frame, "Yawning!", (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) else: # 如果连续3次都小于阈值,则表示打了一次哈欠 if mCOUNTER >= MOUTH_AR_CONSEC_FRAMES: # 阈值:3 mTOTAL += 1 # 重置嘴帧计数器 mCOUNTER = 0 cv2.putText(frame, "COUNTER: {}".format(mCOUNTER), (150, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "MAR: {:.2f}".format(mar), (300, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "Yawning: {}".format(mTOTAL), (450, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 0), 2) """ 瞌睡点头 """ # 第十五步:获取头部姿态 reprojectdst, euler_angle = get_head_pose(shape) har = euler_angle[0, 0] # 取pitch旋转角度 if har > HAR_THRESH: # 点头阈值0.3 hCOUNTER += 1 else: # 如果连续3次都小于阈值,则表示瞌睡点头一次 if hCOUNTER >= NOD_AR_CONSEC_FRAMES: # 阈值:3 hTOTAL += 1 # 重置点头帧计数器 hCOUNTER = 0 # 绘制正方体12轴 # for start, end in line_pairs: # cv2.line(frame, reprojectdst[start], reprojectdst[end], (0, 0, 255)) # 显示角度结果 cv2.putText(frame, "X: " + "{:7.2f}".format(euler_angle[0, 0]), (10, 90), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), thickness=2) # GREEN cv2.putText(frame, "Y: " + "{:7.2f}".format(euler_angle[1, 0]), (150, 90), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (255, 0, 0), thickness=2) # BLUE cv2.putText(frame, "Z: " + "{:7.2f}".format(euler_angle[2, 0]), (300, 90), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), thickness=2) # RED cv2.putText(frame, "Nod: {}".format(hTOTAL), (450, 90), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 0), 2) # 第十六步:进行画图操作,68个特征点标识 for (x, y) in shape: cv2.circle(frame, (x, y), 1, (0, 0, 255), -1) print('嘴巴实时长宽比:{:.2f} '.format(mar) + "\t是否张嘴:" + str([False, True][mar > MAR_THRESH])) print('眼睛实时长宽比:{:.2f} '.format(ear) + "\t是否眨眼:" + str([False, True][COUNTER >= 1])) # 确定疲劳提示:眨眼50次,打哈欠15次,瞌睡点头15次 if TOTAL >= 50 or mTOTAL >= 15 or hTOTAL >= 15: cv2.putText(frame, "SLEEP!!!", (100, 200), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 255), 3) # 按q退出 cv2.putText(frame, "Press 'q': Quit", (20, 500), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (84, 255, 159), 2) # 窗口显示 show with opencv cv2.imshow("Frame", frame) # if the `q` key was pressed, break from the loop if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放摄像头 release camera cap.release() # do a bit of cleanup cv2.destroyAllWindows()

第三步:搭建GUI界面

具体功能包括,摄像头和视频流识别的功能

第四步:整个工程的内容

项目完整文件下载请见演示与介绍视频的简介处给出:➷➷➷

https://www.bilibili.com/video/BV1SrSuY6EwJ/

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

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

相关文章

AMD ROCm终极安装指南:快速搭建GPU计算环境

AMD ROCm终极安装指南&#xff1a;快速搭建GPU计算环境 【免费下载链接】ROCm AMD ROCm™ Software - GitHub Home 项目地址: https://gitcode.com/GitHub_Trending/ro/ROCm 还在为AMD GPU开发环境配置而烦恼吗&#xff1f;本指南将带你快速完成AMD ROCm开源AI工具栈的完…

Linux软件管理新范式:从复杂依赖到一键安装的蜕变之旅

Linux软件管理新范式&#xff1a;从复杂依赖到一键安装的蜕变之旅 【免费下载链接】星火应用商店Spark-Store 星火应用商店是国内知名的linux应用分发平台&#xff0c;为中国linux桌面生态贡献力量 项目地址: https://gitcode.com/spark-store-project/spark-store 你是…

Spark Store:重塑Linux应用生态的智能分发平台

Spark Store&#xff1a;重塑Linux应用生态的智能分发平台 【免费下载链接】星火应用商店Spark-Store 星火应用商店是国内知名的linux应用分发平台&#xff0c;为中国linux桌面生态贡献力量 项目地址: https://gitcode.com/spark-store-project/spark-store 还在为Linux…

(新卷,100分)- 精准核酸检测(Java JS Python C)

(新卷,100分)- 精准核酸检测&#xff08;Java & JS & Python & C&#xff09;题目描述为了达到新冠疫情精准防控的需要&#xff0c;为了避免全员核酸检测带来的浪费&#xff0c;需要精准圈定可能被感染的人群。现在根据传染病流调以及大数据分析&#xff0c;得到了…

StreamDiffusion多语言AI生成:技术演进与产业落地实践

StreamDiffusion多语言AI生成&#xff1a;技术演进与产业落地实践 【免费下载链接】StreamDiffusion StreamDiffusion: A Pipeline-Level Solution for Real-Time Interactive Generation 项目地址: https://gitcode.com/gh_mirrors/st/StreamDiffusion 在全球化内容创作…

Garage Web UI:5分钟快速上手的分布式存储管理终极方案

Garage Web UI&#xff1a;5分钟快速上手的分布式存储管理终极方案 【免费下载链接】garage-webui WebUI for Garage Object Storage Service 项目地址: https://gitcode.com/gh_mirrors/ga/garage-webui 你是否正在为复杂的分布式存储管理而头疼&#xff1f;Garage Web…

SmolVLM轻量级视觉AI:边缘计算的革命性突破

SmolVLM轻量级视觉AI&#xff1a;边缘计算的革命性突破 【免费下载链接】smolvlm-realtime-webcam 项目地址: https://gitcode.com/gh_mirrors/sm/smolvlm-realtime-webcam 在人工智能技术快速迭代的今天&#xff0c;边缘计算与多模态AI的融合正成为行业变革的重要驱动…

MQTTX大流量场景实战调优:从性能瓶颈到极致吞吐的5大核心策略

MQTTX大流量场景实战调优&#xff1a;从性能瓶颈到极致吞吐的5大核心策略 【免费下载链接】MQTTX A Powerful and All-in-One MQTT 5.0 client toolbox for Desktop, CLI and WebSocket. 项目地址: https://gitcode.com/gh_mirrors/mq/MQTTX 在高并发物联网应用中&#…

AI智能文档助手终极指南:从零搭建企业级文档处理平台

AI智能文档助手终极指南&#xff1a;从零搭建企业级文档处理平台 【免费下载链接】PaddleOCR 飞桨多语言OCR工具包&#xff08;实用超轻量OCR系统&#xff0c;支持80种语言识别&#xff0c;提供数据标注与合成工具&#xff0c;支持服务器、移动端、嵌入式及IoT设备端的训练与部…

5分钟搞定分布式存储管理?Garage WebUI给你答案

5分钟搞定分布式存储管理&#xff1f;Garage WebUI给你答案 【免费下载链接】garage-webui WebUI for Garage Object Storage Service 项目地址: https://gitcode.com/gh_mirrors/ga/garage-webui 在自托管对象存储解决方案的运维实践中&#xff0c;管理员常常面临复杂的…

文言文加密:当古典智慧邂逅数字安全

文言文加密&#xff1a;当古典智慧邂逅数字安全 【免费下载链接】Abracadabra Abracadabra 魔曰&#xff0c;下一代文本加密工具 项目地址: https://gitcode.com/gh_mirrors/abra/Abracadabra 在这个信息透明到令人不安的时代&#xff0c;你的每一次键盘敲击都可能成为他…

模型鲁棒性测试:M2FP在不同光照下的表现

模型鲁棒性测试&#xff1a;M2FP在不同光照下的表现 &#x1f31e; 光照变化对语义分割模型的挑战 在计算机视觉任务中&#xff0c;光照条件的变化是影响模型性能的关键外部因素之一。从强光直射到昏暗室内&#xff0c;不同的照明环境会显著改变图像的颜色分布、对比度和阴影结…

Presenton:3分钟用AI将文档变专业演示文稿的终极指南

Presenton&#xff1a;3分钟用AI将文档变专业演示文稿的终极指南 【免费下载链接】presenton Open-Source, Locally-Run AI Presentation Generator (Gamma Alternative) 项目地址: https://gitcode.com/gh_mirrors/pr/presenton 还在为制作演示文稿而烦恼吗&#xff1f…

GAN Lab深度解析:浏览器中的生成对抗网络实验室

GAN Lab深度解析&#xff1a;浏览器中的生成对抗网络实验室 【免费下载链接】ganlab GAN Lab: An Interactive, Visual Experimentation Tool for Generative Adversarial Networks 项目地址: https://gitcode.com/gh_mirrors/ga/ganlab 想要理解生成对抗网络&#xff0…

M2FP模型在智慧酒店中的服务优化应用

M2FP模型在智慧酒店中的服务优化应用 &#x1f310; 智慧酒店场景下的AI视觉新范式 随着智能硬件与边缘计算的快速发展&#xff0c;智慧酒店正从“自动化”迈向“智能化”。传统的人体检测或行为识别系统多停留在“是否有人”、“动作分类”的粗粒度层面&#xff0c;难以支撑精…

深度学习模型部署:M2FP的API开发指南

深度学习模型部署&#xff1a;M2FP的API开发指南 &#x1f4d6; 项目简介&#xff1a;M2FP 多人人体解析服务&#xff08;WebUI API&#xff09; 在计算机视觉领域&#xff0c;人体解析&#xff08;Human Parsing&#xff09;是一项比通用语义分割更精细的任务&#xff0c;目标…

突破传统:用控制器重新定义魔兽世界游戏体验

突破传统&#xff1a;用控制器重新定义魔兽世界游戏体验 【免费下载链接】WoWmapper Controller input mapper for World of Warcraft and ConsolePort 项目地址: https://gitcode.com/gh_mirrors/wo/WoWmapper 你是否厌倦了长时间使用键盘鼠标带来的手腕酸痛&#xff1…

Edge WebDriver自动化测试环境构建实战:从签名验证到持续集成

Edge WebDriver自动化测试环境构建实战&#xff1a;从签名验证到持续集成 【免费下载链接】runner-images actions/runner-images: GitHub官方维护的一个仓库&#xff0c;存放了GitHub Actions运行器的镜像文件及相关配置&#xff0c;这些镜像用于执行GitHub Actions工作流程中…

Vibe Kanban主入口文件配置终极指南:快速上手AI编程看板管理

Vibe Kanban主入口文件配置终极指南&#xff1a;快速上手AI编程看板管理 【免费下载链接】vibe-kanban Kanban board to manage your AI coding agents 项目地址: https://gitcode.com/GitHub_Trending/vi/vibe-kanban Vibe Kanban是一款专为AI编程代理设计的现代化看板…

WeClone:用AI创造你的专属数字分身,从此拥有24小时在线助手

WeClone&#xff1a;用AI创造你的专属数字分身&#xff0c;从此拥有24小时在线助手 【免费下载链接】WeClone 欢迎star⭐。使用微信聊天记录微调大语言模型&#xff0c;并绑定到微信机器人&#xff0c;实现自己的数字克隆。 数字克隆/数字分身/LLM/大语言模型/微信聊天机器人/L…