You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

屏幕特定区域像素变化追踪并触发声音告警技术需求咨询

屏幕特定区域像素变化检测+声音告警方案(新手友好)

准备工作:安装依赖库

打开命令提示符,运行以下命令安装所需工具:

pip install pyautogui pillow playsound
  • pyautogui:负责屏幕截图和获取鼠标位置
  • pillow:处理图片像素对比
  • playsound:播放告警声音(Windows用户也可以用系统自带的winsound替代,无需额外安装)

完整代码实现

复制以下代码到记事本,保存为monitor.py:

import pyautogui
import time
from PIL import Image
# 若playsound报错,替换成下面的winsound(Windows专属)
# import winsound

# 获取要监控的区域坐标(新手友好的可视化选择)
def get_monitor_area():
    print("把鼠标移到监控区域左上角,按回车确认")
    input()
    x1, y1 = pyautogui.position()
    print("把鼠标移到监控区域右下角,按回车确认")
    input()
    x2, y2 = pyautogui.position()
    return (x1, y1, x2 - x1, y2 - y1)  # 返回(x起点, y起点, 宽度, 高度)

# 对比两张截图的像素差异
def is_area_changed(prev_img, current_img):
    # 转灰度图减少计算量,降低误判
    prev_gray = prev_img.convert('L')
    current_gray = current_img.convert('L')
    width, height = prev_gray.size
    
    # 计算所有像素的亮度差总和
    diff_total = 0
    for x in range(width):
        for y in range(height):
            diff_total += abs(prev_gray.getpixel((x,y)) - current_gray.getpixel((x,y)))
    
    # 阈值可根据区域大小调整:区域越大阈值越高,避免误触发
    threshold = 1500
    return diff_total > threshold

if __name__ == "__main__":
    monitor_area = get_monitor_area()
    print(f"开始监控区域:{monitor_area}")
    
    # 初始化基准截图
    prev_screenshot = pyautogui.screenshot(region=monitor_area)
    
    # 循环检测
    while True:
        time.sleep(2)  # 每2秒检查一次,可按需调整间隔
        current_screenshot = pyautogui.screenshot(region=monitor_area)
        
        if is_area_changed(prev_screenshot, current_screenshot):
            print("检测到区域变化!")
            # 方案1:用自定义声音文件(需提前准备wav格式文件)
            playsound("alert.wav")
            # 方案2:用系统蜂鸣声(Windows专属,无需额外文件)
            # winsound.Beep(1200, 600)  # 1200赫兹,响600毫秒
            prev_screenshot = current_screenshot  # 更新基准图,避免重复告警

新手操作步骤

  1. 安装Python:如果没装,去官网下载3.8+版本,安装时务必勾选「Add Python to PATH」
  2. 准备告警声音:
    • 用方案1的话,找个wav格式的提示音(比如在线生成简单蜂鸣声),和monitor.py放在同一文件夹
    • 嫌麻烦直接用方案2的系统蜂鸣声,注释掉playsound那行,解开winsound的代码即可
  3. 运行程序:双击monitor.py,按照提示用鼠标框选Zoom等待区的区域,之后程序会自动后台监控

实用调整建议

  • 若频繁误触发:调大代码里的threshold值(比如区域是100x100像素,阈值设到2000)
  • 若漏触发:调小threshold值,或者缩短time.sleep()的间隔(比如改成1秒)
  • 必须保持Zoom窗口的监控区域可见,最小化窗口会导致截图失败

内容的提问来源于stack exchange,提问作者Illia Mamchur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:25:09