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

如何修改Python像素颜色检测脚本以指定触发RGB值?

问题解决与脚本修改

1. TypeError错误修复

你遇到的TypeError: rgb_pixel() takes 0 positional arguments but 3 were given错误,是因为修改rgb_pixel函数时删除了它的参数,但调用该函数的地方仍然传入了r、g、b三个像素值。解决方法很直接:给rgb_pixel函数补上三个参数即可。

2. 完整修改后的脚本

以下是实现仅检测特定RGB及相似颜色的完整脚本,同时修复了参数错误:

import pyautogui
import keyboard
import time

# 目标RGB值
TARGET_RGB = (136, 36, 150)
# 颜色相似阈值(值越小要求颜色越接近,建议范围10-30)
COLOR_THRESHOLD = 20

def rgb_pixel(r, g, b):
    # 计算当前RGB与目标RGB的差异绝对值总和
    color_diff = abs(r - TARGET_RGB[0]) + abs(g - TARGET_RGB[1]) + abs(b - TARGET_RGB[2])
    # 当差异小于阈值时,返回True(匹配目标颜色)
    return color_diff < COLOR_THRESHOLD

def detect_pixel_change():
    # 设置检测的屏幕区域(示例:左上角x=100, y=100,宽高各20的区域)
    region = (100, 100, 20, 20)
    # 获取初始区域的像素颜色
    initial_screenshot = pyautogui.screenshot(region=region)
    initial_pixels = list(initial_screenshot.getdata())
    
    print("开始检测颜色变化...")
    while True:
        # 实时获取区域像素
        current_screenshot = pyautogui.screenshot(region=region)
        current_pixels = list(current_screenshot.getdata())
        
        # 遍历每个像素,检查是否有匹配目标颜色的像素
        for idx, pixel in enumerate(current_pixels):
            # 跳过透明通道(如果有的话)
            if len(pixel) == 4:
                r, g, b, _ = pixel
            else:
                r, g, b = pixel
            # 调用rgb_pixel判断是否匹配目标颜色
            if rgb_pixel(r, g, b):
                # 触发热键2
                keyboard.press_and_release('2')
                print("检测到目标颜色,已触发热键2")
                # 可选:触发后暂停一段时间,避免重复触发
                time.sleep(0.5)
                # 更新初始像素,避免持续触发
                initial_pixels = current_pixels
                break
        
        # 避免CPU占用过高
        time.sleep(0.1)

if __name__ == "__main__":
    try:
        detect_pixel_change()
    except KeyboardInterrupt:
        print("检测已停止")

3. 关键代码解释

  • 目标颜色与阈值设置:TARGET_RGB是你要检测的基准颜色,COLOR_THRESHOLD控制颜色相似程度,数值越小要求颜色越接近,可根据实际需求调整。
  • rgb_pixel函数修正:现在函数接收r、g、b三个参数,通过计算颜色差异绝对值总和判断是否匹配目标颜色。
  • 触发逻辑调整:不再检测任意颜色变化,只有当区域内出现匹配目标的相似颜色时,才触发热键2。
  • 防重复触发:触发后添加了0.5秒延迟,并更新初始像素,避免短时间内重复触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:15:54