作为打工人,是绝对不会在办公室摸鱼的,要是你看到,一定要全当没看到对我教育一番。
当然和我不一样,可能你会忍不住摸鱼,为此我帮你写了一个摸鱼小卫士。它帮你监控门口有没有动静,有没有敲门声。如果有,那它自动就会帮你把桌面切出来。神不知鬼不觉老板肯定看不到。
下面详细介绍一下:
Fish Guard:一个用摄像头和麦克风帮你守门的小工具
Fish Guard 是一个跨平台桌面小工具。它的用途很直接:用摄像头盯住门口或走廊区域,用麦克风监听敲门声;一旦检测到门口变化或疑似敲门,就自动静音、隐藏当前窗口并显示桌面。
这个项目不是复杂的 AI 系统,而是一个实用型的小自动化工具。它把几个简单但有效的信号组合起来:视频侧使用 ROI 区域的帧间差分,音频侧使用 RMS 能量、频谱质心、低频能量占比和短促脉冲间隔来判断敲门。这样做的好处是依赖轻、运行快,也比较容易根据自己的办公室环境调参数。
主要功能
- 摄像头实时预览,并支持鼠标框选检测区域。
- 检测门口区域的明显运动变化。
- 麦克风监听短促、低频占比较高的敲门声。
- 触发后自动执行保护动作:静音、隐藏当前窗口、显示桌面。
- 支持 macOS、Windows 和 Linux。
- 提供音频样本分析脚本,方便以后继续调敲门检测参数。
使用方式
安装依赖:
pip3 install -r requirements.txt
macOS 或 Linux 上如果需要音频检测,还要先安装 PortAudio。macOS 可以用:
brew install portaudio
启动:
python3 fish_guard.py
或者在 macOS/Linux 上运行:
./start.sh
启动后先在摄像头画面里框选门的位置,再点击“开始监控”。如果没有框选区域,也可以选择使用全画面检测,但实际使用时推荐框选门口区域,这样误报会少很多。
实现思路
视频检测部分没有用复杂模型,而是对选中的 ROI 区域做帧间差分。程序会把画面转成灰度、做高斯模糊,然后计算当前帧和上一帧的差异。如果差异区域面积超过阈值,就认为门口发生了明显变化。
音频检测部分也尽量保持可解释。敲门声通常是短促脉冲,而且能量集中在比较低的频段。程序会先做环境噪声校准,然后在实时音频流里检测高于动态阈值的片段,再用频谱质心、低频能量占比、脉冲数量和脉冲间隔过滤掉说话声、音乐声和持续噪声。
跨平台动作封装在单独的系统层里。macOS 使用 AppleScript,Windows 使用系统 API,Linux 优先调用常见桌面工具和音频后端命令。
适用场景和限制
Fish Guard 更适合固定机位、固定办公环境下使用。如果摄像头经常移动,或者门口光线变化很强,就需要重新框选检测区域并降低视频灵敏度。音频检测也会受环境影响,如果办公室里一直有音乐、电视或密集键盘声,可以直接关闭音频检测,只保留视频检测。
这个项目的定位是轻量实用,不追求“识别所有情况”。它更像是一个可以自己调、可以理解、可以快速运行的小工具。
项目地址
GitHub:git@github.com:junxie01/fish_guard.git