资讯详情

保姆级|YOLO PPE 个人防护检测,支持视频文件 + 摄像头实时识别,直接复制代码运行

📅 2026/10/20 11:25:20 | 华诺云谱 👁 阅读
保姆级|YOLO PPE 个人防护检测,支持视频文件 + 摄像头实时识别,直接复制代码运行
工地 AI 安防场景最常用的目标检测安全帽、反光衣穿戴检测很多小伙伴想要一份开箱即用的 YOLO 检测代码既能上传本地视频自动生成带检测框的结果视频也能直接打开电脑摄像头做实时识别。今天把完整项目分享出来模型 源码一次性给到复制就能跑✅ 本模型可识别类别精简版只展示我们需要的 7 类[Hardhat, Mask, NO-Hardhat, NO-Mask, NO-Safety Vest, Person, Safety Vest]Hardhat佩戴安全帽 ✅NO-Hardhat未佩戴安全帽 ❌Safety Vest穿戴反光衣 ✅NO-Safety Vest未穿戴反光衣 ❌Person人员Mask佩戴口罩NO-Mask未佩戴口罩 我们精简过滤了机械、车辆、安全锥等无关类别画面更干净重点聚焦人员防护合规检测。 效果演示(输出ppe.mp4检测模型效果)ppe视频演示读取测试视频 ppe.mp4AI 自动画框、标注类别 置信度输出带标注的结果视频。同时代码支持一键切换电脑摄像头实时检测打开摄像头就能实时识别现场人员防护情况。 环境依赖准备先安装依赖库打开 cmd 执行pip install ultralytics opencv-python pillow numpy说明需要提前准备训练好的ppe.ptYOLO 模型文件如果不想自行训练模型关注微信公众号私信直接给开箱即用的ppe.pt模型文件测试视频 ppe.mp4和代码放在同一个文件夹 完整 Python 源码双模式视频文件检测 / 摄像头实时检测使用方法修改mode参数mode video 读取本地视频输出标注视频文件就是你的 ppe.mp4mode camera调用电脑摄像头实时检测按 q 退出from ultralytics import YOLO import cv2 import math from PIL import Image, ImageDraw, ImageFont import numpy as np # 配置区按需修改 mode video # video本地视频camera摄像头实时检测 video_path ppe.mp4 output_video_path output_result.mp4 model_path ppe.pt conf_threshold 0.6 # 只显示指定7个类别 show_classes [Hardhat, Mask, NO-Hardhat, NO-Mask, NO-Safety Vest, Person, Safety Vest] # 类别配色合规绿色违规红色 color_map { Hardhat: (0, 255, 0), Mask: (0, 255, 0), Safety Vest: (0, 255, 0), NO-Hardhat: (0, 0, 255), NO-Mask: (0, 0, 255), NO-Safety Vest: (0, 0, 255), Person: (255, 0, 0), } # # 加载YOLO模型 model YOLO(model_path) # 中文绘制函数Windows微软雅黑Linux/Mac需要修改字体路径 def draw_text(img, text, position, font_size30, color(0,255,255)): pil_img Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) draw ImageDraw.Draw(pil_img) font ImageFont.truetype(C:/Windows/Fonts/msyh.ttc, font_size) draw.text(position, text, fontfont, fillcolor) return cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR) # 初始化视频源 out None if mode video: cap cv2.VideoCapture(video_path) fps cap.get(cv2.CAP_PROP_FPS) w int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) out cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*mp4v), fps, (w, h)) else: cap cv2.VideoCapture(0) # 0默认摄像头 cv2.namedWindow(YOLO PPE安全检测, cv2.WINDOW_NORMAL) while True: ret, img cap.read() if not ret: break img draw_text(img, YOLO PPE 防护检测, (20, 40), font_size36) label_off {} results model(img, confconf_threshold, iou0.5) for r in results: for box in r.boxes: x1,y1,x2,y2 map(int, box.xyxy[0]) conf math.ceil(box.conf[0] * 100)/100 cls_idx int(box.cls[0]) cls_name model.names[cls_idx] # 过滤只渲染我们需要的类别 if cls_name not in show_classes: continue box_color color_map.get(cls_name, (200,200,200)) # 标签防重叠偏移 k x1 // 100 off label_off.get(k, 0) label_off[k] off 40 label_text f{cls_name} {conf} # 标签背景 cv2.rectangle(img, (x1, y1 - 40 - off), (x1 220, y1 - 5 - off), box_color, -1) cv2.putText(img, label_text, (x1 8, y1 - 15 - off), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (255,255,255), 2) cv2.rectangle(img, (x1,y1), (x2,y2), box_color, 2) if mode video: out.write(img) cv2.imshow(YOLO PPE 防护检测, img) if cv2.waitKey(1) 0xFF ord(q): break cap.release() if out is not None: out.release() cv2.destroyAllWindows() print(✅ 程序执行完成) 使用教程一看就会把代码、ppe.pt模型、测试视频ppe.mp4放在同一个文件夹修改第一处配置modevideo处理本地视频改为modecamera开启摄像头实时检测运行代码弹出预览窗口按键盘q随时停止程序视频模式下处理完成后目录自动生成output_result.mp4带标注结果视频 小提示conf_threshold 置信度调低如 0.4检测更多目标调高减少误检Linux / Mac 用户需要替换msyh.ttc字体路径否则中文会乱码如果不需要预览窗口可以注释掉 cv2.imshow 和 cv2.waitKey后台静默生成视频 应用场景✅ 工地现场安防检测✅ 园区、工厂人员防护穿戴巡检✅ 视频录像事后 AI 分析自动识别违规不戴安全帽、不穿反光衣人员✅ 本地离线推理不需要上传视频到云端保护数据隐私如果你正在做 YOLO 目标检测、工地安防 AI 项目这份代码可以直接拿来二次开发并量化到视觉边缘盒子使用觉得有用点个赞 收藏文章写项目的时候随时回来复制代码转发给做机器视觉、安防算法的朋友一起交流学习欢迎关注微信公众号交流。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑