【实战】使用YOLO11进行驾驶疲劳检测及警报【附源码与详细说明】
《------往期经典推荐------》
一、AI应用软件开发实战专栏【链接】
二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】,持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~
《------正文------》
目录 引言环境配置闭眼检测基本步骤完整代码代码详细解释摄像头实时检测引言
本文将研究如何在OpenCV中使用YOLO11对象检测模型来检测视频中的眼睛闭合,并在眼睛闭合超过指定阈值时发出警告。我们还将讨论应用这种方法进行实时检测的可能性。眼睛闭合检测在许多现实应用中是一个重要的用例,从监测驾驶员疲劳到确保在关键环境中的警觉性。
环境配置
在我们开始之前,请确保您安装了以下库:
OpenCV:用于视频处理和显示结果。Ultralytics YOLO:一种流行且高效的深度学习模型,用于对象检测。要安装必要的库,可以运行:
pip install opencv-python pip install ultralytics 12
闭眼检测基本步骤
加载YOLO模型:我们加载一个预先训练好的YOLO模型(best.pt)进行眼睛检测。这个模型被训练成识别两种状态:“闭”和“开”的眼睛。读取输入视频:使用OpenCV逐帧读取视频。执行对象检测:YOLO用于检测每帧中眼睛的状态,是闭合还是睁开的状态。跟踪眼睛闭合持续时间:如果检测到眼睛“闭合”超过指定阈值,则显示警告。显示结果:结果将写入输出视频文件,如果需要,警告消息将覆盖在帧上。完整代码
下面是使用YOLO11和OpenCV检测视频中眼睛闭合的完整Python代码:
import cv2 from ultralytics import YOLO # 加载预训练的YOLO模型 model = YOLO("best.pt") names = model.names # 打开视频文件 cap = cv2.VideoCapture("video.mp4") assert cap.isOpened(), "读取视频文件出错" w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) # 初始化视频写入器以保存输出 video_writer = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) # 初始化用于检测眼睛闭合的变量 eye_closed_frames = 0 eye_closed_threshold_seconds = 1 # 阈值(秒) eye_closed_threshold_frames = eye_closed_threshold_seconds * fps # 将秒转换为帧数 while cap.isOpened(): success, im0 = cap.read() if not success: print("视频帧为空或视频处理已成功完成。") break # 使用YOLO预测眼睛状态 results = model.predict(im0, show=False) boxes = results[0].boxes.xyxy.cpu().tolist() clss = results[0].boxes.cls.cpu().tolist() annotator = Annotator(im0, line_width=2, example=names) eye_closed = False # 标记当前帧中眼睛是否闭合 if boxes is not None: for box, cls in zip(boxes, clss): clsName = names[int(cls)] xmax = int(box[0]) ymin = int(box[1]) xmin = int(box[2]) ymax = int(box[3]) # 根据类别名称设置颜色 if clsName == 'closed': clr = (0, 0, 255) eye_closed = True # 标记眼睛为闭合 elif clsName == 'opened': clr = (0, 255, 0) # 绘制边界框和标签 font = cv2.FONT_HERSHEY_SIMPLEX font_scale = 1 font_thickness = 2 tw, th = cv2.getTextSize(clsName, font, font_scale, font_thickness)[0] cv2.rectangle(im0, (xmin, ymin), (xmax, ymax), color=clr, thickness=2) cv2.putText(im0, clsName, (xmax, ymin - 5), font, font_scale, color=clr, thickness=font_thickness) # 检查眼睛闭合持续时间 if eye_closed: eye_closed_frames += 1 else: # 如果眼睛未闭合,重置计数器 eye_closed_frames = 0 # 如果眼睛闭合时间超过阈值,显示警告 if eye_closed_frames > eye_closed_threshold_frames: print("警告:眼睛闭合时间超过2秒!") cv2.putText(im0, "警告:眼睛闭合时间超过2秒!", (50, 50), font, font_scale, (0, 0, 255), font_thickness) # 将处理后的帧写入输出视频 video_writer.write(im0) # 释放资源 cap.release() video_writer.release()
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374代码详细解释
模型加载:
使用来自ultralytics库的YOLO类加载YOLO模型,并提取类名。视频处理:
使用cv2.VideoCapture打开输入视频,并初始化视频编写器以保存输出。逐帧检测:
视频是逐帧处理的。对于每一帧,YOLO模型用于检测眼睛并将其分类为“闭合”或“打开”。闭眼检测:
计数器(eye_closed_frames)跟踪眼睛被检测为“闭合”的连续帧的数量。“如果此计数超过阈值(在本例中为1秒的帧),则会显示警告消息。警告消息显示:
每当眼睛已经闭合超过阈值持续时间时,警告消息被动态地覆盖在视频上。摄像头实时检测
上面演示的方法可以适用于使用网络摄像头或实时视频源的实时检测。以下是您如何实现这一点:
捕获实时视频:通过将cv2.VideoCapture参数更改为0(默认网络摄像头),将视频文件输入替换为实时视频源。cap = cv2.VideoCapture(0) # Use 0 for the default camera, or 1, 2, etc. for other cameras 1
优化实时性能:
为了确保流畅的实时性能,您可能需要通过使用较小的模型(如YOLO11n)或在GPU上运行(如果可用)来优化模型推理速度。实时显示结果:
使用cv2.imshow()实时显示视频源:cv2.imshow("Eye Closure Detection", im0) if cv2.waitKey(1) & 0xFF == ord('q'): # Press 'q' to quit break 1
通过YOLO和OpenCV的结合,您可以在视频中甚至实时有效地检测眼睛闭合。该技术具有许多实际应用,包括驾驶员监控系统,疲劳检测和各种安全关键领域的警觉性验证。通过利用像YOLO这样的深度学习模型,您可以在检测眼睛闭合等细微面部表情时实现高准确性和性能。
好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!
相关知识
鸿蒙应用开发实战项目,看这一篇文章就够了(部分项目附源码)
基于YOLOv8深度学习的水稻害虫检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的智能小麦害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
《实战为王:52个超详细的摄影实战案例解析》摄影达人独门技巧[pdf] – 自学吧
b2b鲜花购物网站源码资源
Java十大经典案例源码解析与实战应用
基于YOLOv8深度学习的葡萄病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
运用基线对入侵检测警报的聚类研究
基于YOLOv8深度学习的智能肺炎诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
网址: 【实战】使用YOLO11进行驾驶疲劳检测及警报【附源码与详细说明】 https://www.huajiangbk.com/newsview1326044.html
上一篇: 毒品概述 |
下一篇: 辨别花卉植物的软件(有一个认识各 |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039