如何用pyautogui检测特定颜色?代码误判问题求助
解决pyautogui像素颜色检测逻辑错误的问题
问题根源分析
- 比较语句未做条件判断:你当前代码仅执行了
pyautogui.pixel(1400,545)[1] == 213的比较运算,但没有用if语句判断结果。无论颜色是否匹配,代码都会直接执行后续的print("I can see it!"),这就是“目标颜色不存在仍判定存在”的核心原因。 - 异常类型错误:
ImageNotFoundException是pyautogui图像定位类函数(如locateOnScreen)抛出的异常,pixel方法不会触发该异常。只有当传入坐标超出屏幕范围时,pixel才会抛出OutOfBoundsException,因此你的except块永远不会被执行。
修正后的代码
import pyautogui import time while True: # 获取指定坐标像素的G通道颜色值 g_channel_value = pyautogui.pixel(1400, 545)[1] if g_channel_value == 213: print("I can see it!") time.sleep(10) else: print("No") time.sleep(5)
修改说明
- 移除重复导入的
from pyautogui import *,仅保留import pyautogui,避免命名冲突。 - 将像素颜色比较结果放入
if条件判断中,只有当G通道值匹配213时才输出匹配提示,否则输出未匹配提示。 - 调整
sleep的位置,确保每次检测间隔5秒,匹配到目标颜色后等待10秒再进入下一轮检测。 - 移除无效的
try-except块,若需处理坐标超出屏幕的情况,可添加对pyautogui.OutOfBoundsException的捕获。
内容的提问来源于stack exchange,提问作者mmewtwosaysbye
相关产品推荐
相关产品推荐

