news 2026/9/25 6:07:44

树莓派 + YOLOv8:我给自己做了一个“防摸鱼”监控系统,老板来了自动切屏!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树莓派 + YOLOv8:我给自己做了一个“防摸鱼”监控系统,老板来了自动切屏!

🐟 前言:科技是为了更好地生存

作为一名程序员,工作之余偶尔“带薪放松”一下是合情合理的。
但最尴尬的莫过于:当你正打开 Steam 或者 B 站时,老板悄无声息地出现在了你身后。

靠后视镜?太 low。靠听脚步声?太累。
我们要用技术解决问题!
今天,我将手把手教你用树莓派 (Raspberry Pi)加上YOLOv8视觉模型,打造一个全自动防摸鱼防御塔。

核心功能:摄像头 24 小时监控门口,一旦识别到“老板”或者“人脸”,立刻向你的电脑发送指令,瞬间切换回 VS Code 代码界面!


🛠️ 系统架构:它是怎么工作的?

我们不把算力浪费在工作电脑上(容易被发现进程),而是把识别任务全部交给树莓派。

硬件清单:

  1. 树莓派 4B / 5(推荐 4GB 内存以上)。
  2. USB 摄像头 / CSI 摄像头(广角镜头最佳)。
  3. 工作电脑(Windows/Mac)。

逻辑流程图 (Mermaid):

1. 视频流输入
2. YOLOv8 推理
Yes (置信度 > 0.8)
No
3. TCP/UDP 指令
4. PyAutoGUI
USB 摄像头
树莓派 (边缘计算)
检测到老板?
Socket 发送端
继续监控
工作电脑 (接收端)
触发 Win+D (回到桌面)

📸 Step 1: 数据集准备(最危险的一步)

要训练一个能识别“老板”的模型,你需要老板的照片。

  • 方案 A (勇士版):直接拿着手机对着老板拍,积累 100 张素材。
  • 方案 B (猥琐版):从公司大合照、监控录像、或者他路过时偷拍。

标注数据:
使用LabelImg或Roboflow进行标注。

  • Label:boss(老板)
  • Label:human(普通同事,可选,用于二级预警)

🧠 Step 2: 训练 YOLOv8 模型

为了在树莓派上跑得动,我们选择最轻量级的YOLOv8n (Nano)版本。

本地电脑训练代码 (GPU):

fromultralyticsimportYOLO# 1. 加载预训练模型model=YOLO('yolov8n.pt')# 2. 训练 (指向你的数据集 yaml 文件)# epochs=50 差不多够了,imgsz=640results=model.train(data='boss_dataset.yaml',epochs=50,imgsz=640)# 3. 导出为 NCNN 或 ONNX 格式 (关键!树莓派跑不动 PyTorch 原生格式)model.export(format='ncnn')

训练完成后,你会得到一个best.pt(或者导出后的best_ncnn_model),把它拷贝到树莓派上。


🍓 Step 3: 树莓派部署 (核心代码)

在树莓派上,我们需要安装ultralytics和opencv-python。

detector.py(运行在树莓派):

importcv2fromultralyticsimportYOLOimportsocketimporttime# 1. 加载模型model=YOLO("yolov8n.pt")# 建议使用导出后的 ncnn 模型以提速# 2. 初始化网络发送端 (发给电脑)PC_IP="192.168.1.100"# 你电脑的 IPPORT=8888client_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)# 3. 打开摄像头cap=cv2.VideoCapture(0)# 降低分辨率以提高 FPScap.set(3,640)cap.set(4,480)print("🛡️ 防摸鱼系统启动中...")whileTrue:ret,frame=cap.read()ifnotret:break# 4. 推理results=model(frame,stream=True,conf=0.6)# 置信度设高点,防止误判forrinresults:boxes=r.boxesforboxinboxes:cls=int(box.cls[0])label=model.names[cls]# 5. 核心判断逻辑iflabel=='person':# 如果你训练了专门的 boss 类,这里写 'boss'print("⚠️ 警报!检测到目标!")# 发送指令给电脑msg="BOSS_IS_COMING"client_socket.sendto(msg.encode(),(PC_IP,PORT))# 冷却时间,防止一直切屏闪瞎眼time.sleep(5)# 可选:显示监控画面 (会降低性能,建议无头运行)# cv2.imshow('Surveillance', frame)# if cv2.waitKey(1) & 0xFF == ord('q'): breakcap.release()

💻 Step 4: 电脑端接收与自动切屏

在你的工作电脑上,运行一个微小的 Python 脚本,监听树莓派发来的信号。

receiver.py(运行在电脑后台):

importsocketimportpyautogui# 自动化控制库# 绑定监听端口server_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)server_socket.bind(("0.0.0.0",8888))print("👨‍💻 工作模式已就绪,等待指令...")whileTrue:data,addr=server_socket.recvfrom(1024)msg=data.decode()ifmsg=="BOSS_IS_COMING":print("💥 收到警报!执行紧急切屏!")# 方案 A: 最小化所有窗口,回到桌面pyautogui.hotkey('win','d')# 方案 B: 切换到上一个应用 (比如写好的代码页面)# pyautogui.hotkey('alt', 'tab')

⚡ Step 5: 性能优化 (让树莓派跑得飞起)

树莓派 4B 直接跑 YOLOv8n 大概只有 1-3 FPS,这延迟太高了,等识别出来老板已经站你背后了。

优化方案:

  1. 模型量化:使用Int8量化。
  2. 导出格式:不要直接用.pt。
  • NCNN:腾讯开源的框架,专门针对 ARM 优化,在树莓派上能跑到 10-15 FPS。
  • ONNX Runtime:比 PyTorch 原生快不少。
  1. 超频:给树莓派加个风扇,超频到 2.0GHz。

优化后的流程图:

Export
NCNN Convert
部署
PyTorch (.pt)
ONNX 格式
NCNN (.bin/.param)
树莓派 FPS 提升 300%

📝 总结与风险提示

通过这个项目,你不仅学会了YOLOv8的训练与部署,还掌握了Socket 网络编程和树莓派硬件控制。这可是实打实的“全栈”技能!

⚠️ 风险提示:

  1. 误判风险:如果把打扫卫生的阿姨识别成老板,你的屏幕会疯狂闪烁。
  2. 职场风险:如果被老板发现你在做这个东西… 呃,你最好解释说这是为了**“保护公司资产安全”**。

祝大家的摸鱼生涯,安全,且高效。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 12:56:10

代码接单:用 ComfyUI 搭建电商模特换装工作流(保姆级教程)

💰 前言:为什么这个需求最赚钱? 在X鱼和小X书上,搜一下“AI 模特图”或者“服装换模特”,你会发现大量的接单需求。 商家痛点极其明显: 太贵:请个外模拍一套图,动辄几千块。太慢&…

作者头像 李华
网站建设 2026/9/23 21:25:35

网上超市|基于java+ vue网上超市系统(源码+数据库+文档)

网上超市 目录 基于springboot vue网上超市系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue网上超市系统 一、前言 博主介绍:✌️大…

作者头像 李华
网站建设 2026/9/1 22:09:14

Kotaemon客户流失预警:行为模式识别

Kotaemon客户流失预警:行为模式识别 在金融、电信和电商这些高度依赖用户黏性的行业里,一个看似普通的对话——“最近费用怎么突然变高了?”——可能就是客户即将流失的第一道裂缝。传统风控系统往往要等到账单周期结束、服务取消申请提交后才…

作者头像 李华
网站建设 2026/9/1 18:58:27

碳钢高性能蝶阀为何能扛住600℃高温?

碳钢高性能蝶阀是以碳钢(如WCB、Q235等)为主要阀体材料,通过蝶板绕阀轴旋转(0-90度范围)实现启闭和调节的高性能阀门,具有高强度、高性价比的特点,广泛应用于石油化工、电力、冶金、市政等行业的…

作者头像 李华
网站建设 2026/9/25 5:43:58

Linux内核与发行版

Linux内核与发行版 当我们说Linux系统时,其含义往往是指采用Linux内核的操作系统。Linux内核负责控制硬件、 管理文件系统、进程管理、网络通讯等,但它本身并没有给用户提供必要的工具和应用软件。 由于Linux内核本身是开源的,所以一些人和厂商在其规则之下, 基于Linux内…

作者头像 李华
网站建设 2026/9/24 13:25:19

用户、文件及目录

用户、文件及目录 用户及用户组 Linux操作系统同样也是多用户操作系统,其中具有管理其他用户和计算机的全部资源的用户, 称为root。 安卓系统,实质上也是基于Linux,安卓手机上常常提到的root权限, 也就是获取最高的权限,就跟电脑获取超级管理员的权限是一样的。 在Li…

作者头像 李华