news 2026/8/16 8:52:15

树莓派 + 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 (猥琐版):从公司大合照、监控录像、或者他路过时偷拍。

标注数据:
使用LabelImgRoboflow进行标注。

  • 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: 树莓派部署 (核心代码)

在树莓派上,我们需要安装ultralyticsopencv-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/8/14 22:11:18

2025年应届生转型指南:金融学转行AI,这些证书能帮你

作为金融学专业的应届生,如果想转行到AI领域,可能会感到迷茫,不知道从哪里开始。毕竟,课堂上学的大多是宏观经济、公司财务,和人工智能的算法、模型好像不太沾边。 其实,跨专业转型没有想象中那么难,关键是要找到一条清晰的学习路径。考取一些有含金量的证书,不仅能系…

作者头像 李华
网站建设 2026/8/16 3:57:21

Deepseek生成8088单板机的流水灯程序

1.Deepseek会话指令8位LED,端口地址800H,程序加载地址CS:IP 为0000:2000,用emu8086编写一流水灯程序2.DeppSeek生成的程序#make_bin#; BIN is plain binary format similar to .com format, but not limited to 1 segment; ; All values between # are d…

作者头像 李华
网站建设 2026/8/16 7:10:41

可靠运行的守护者:A5E45127009原厂配件的核心作用

在西门子罗宾康高压变频器的复杂架构中,每个指定编号的组件都承载着不可或缺的使命。A5E45127009作为经过原厂认证的关键备件,专为系统中特定的电路控制、信号隔离或电源管理功能而设计。其卓越的稳定性和精准的参数表现,是保障变频器整体性能…

作者头像 李华
网站建设 2026/8/15 22:26:57

ESP分区

电脑中的ESP分区是干什么的?UEFI(统一可扩展固件接口)与GPT(GUID分区表)的组合已成为现代计算机系统安装和启动的主流方式。然而,在这种新的安装方式下,一个名为“ESP分区”的组件显得尤为重要&…

作者头像 李华
网站建设 2026/8/15 12:34:40

规避交付风险,驱动生产效率:环形导轨选型核心逻辑与落地实施指南

摘要: 在自动化装配线、检测站及精密制造单元中,环形导轨系统已成为实现高效循环输送的关键基础设施。然而,一个常见的误区是仅关注导轨本身的品牌与价格,忽略了从设计源头到现场调试的全链路风险。本文旨在系统性地拆解环形导轨的…

作者头像 李华
网站建设 2026/8/15 21:19:42

vue3+vite mock引入使用

1、安装对应的包 npm install vite-plugin-mock mockjs -D2、配置 Vite vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue import { viteMockServe } from vite-plugin-mockexport default defineConfig({plugins: [vue(),viteMockServe({…

作者头像 李华