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

如何用Python实现点击屏幕上指定RGB颜色的位置?

定位屏幕特定RGB颜色并自动点击的实现方法

完全可行,Python结合几个第三方库就能轻松实现这个需求,下面是具体的实现步骤和代码示例:

所需依赖库

需要安装两个核心库:

  • pyautogui:用于模拟鼠标操作、捕获屏幕截图
  • Pillow(PIL):用于解析截图的像素颜色值

安装命令:

pip install pyautogui pillow

实现步骤与代码示例

下面是一个完整的示例代码,会遍历屏幕像素,找到第一个匹配目标RGB值的位置并执行点击:

import pyautogui
from PIL import ImageGrab

def find_and_click_target_color(target_rgb):
    # 捕获当前屏幕截图
    screen = ImageGrab.grab()
    # 获取屏幕宽高
    screen_width, screen_height = screen.size

    # 遍历屏幕每个像素
    for x in range(screen_width):
        for y in range(screen_height):
            # 获取当前像素的RGB值
            current_rgb = screen.getpixel((x, y))
            # 匹配目标颜色(如果需要容错,可以用差值范围判断,比如abs(r1-r2)<5)
            if current_rgb == target_rgb:
                # 移动鼠标到目标位置并点击
                pyautogui.moveTo(x, y, duration=0.2)  # duration控制移动速度,单位秒
                pyautogui.click()
                print(f"已找到目标颜色,位置:({x}, {y}),已执行点击")
                return

    print("未找到目标颜色")

# 目标RGB颜色(示例:R=92、G=75、B=44)
target_color = (92, 75, 44)
find_and_click_target_color(target_color)

关键注意事项

  • 颜色容错处理:实际屏幕显示可能存在轻微色差,建议不要用严格相等判断,可以改成允许一定范围的差值,比如:
    def is_color_match(current, target, tolerance=5):
        return (abs(current[0]-target[0]) <= tolerance and
                abs(current[1]-target[1]) <= tolerance and
                abs(current[2]-target[2]) <= tolerance)
    
  • 性能优化:遍历全屏幕像素速度较慢,可以缩小截图范围(比如指定区域ImageGrab.grab(bbox=(x1,y1,x2,y2))),或者按间隔跳过像素(比如range(0, screen_width, 2))提升速度。
  • 安全机制:pyautogui默认开启防误触机制,将鼠标快速移动到屏幕左上角(坐标(0,0))会立即终止程序,避免失控。
  • 系统权限:部分系统(比如macOS)需要在「系统设置-隐私与安全性」中允许Python控制电脑,否则无法执行鼠标操作。

内容的提问来源于stack exchange,提问作者Against No One

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:07:10