PyAutoGUI中pixelMatchesColor始终判定颜色匹配的问题排查
错误原因
你的代码存在两处核心认知偏差,直接导致了异常表现:
- 对
pixelMatchesColor的运行逻辑理解错误:该函数执行正常时只会返回True(颜色匹配)或False(颜色不匹配)的布尔值,不会因为颜色不匹配抛出任何异常。你用try/except包裹调用语句的写法完全无效:只要函数本身没因为坐标越界、截图权限不足这类真实运行错误抛异常,不管颜色匹不匹配,代码都会顺着try块往下执行,永远不会走到except分支,自然无论实际像素是什么颜色都会打印"Color found"。 - 冗余截图的潜在问题:你先手动调用一次
screenshot()读取像素颜色,之后调用pixelMatchesColor时函数内部会重新截取全屏再取色,如果两次操作之间屏幕有瞬时画面变化(比如动画、弹窗),可能出现两次读取颜色不一致的情况,虽然这不是本次bug的核心诱因,但会带来不必要的性能开销和判断误差。
修正方案
直接判断函数返回的布尔值即可,不需要使用异常捕获,同时可以复用同一张截图做判断减少误差:
def myFunction(): im = pyautogui.screenshot() color = im.getpixel((1992, 1435)) print(color) # tolerance为允许的色差值,0代表完全匹配,可根据需求调整为0-255之间的数值 if pyautogui.pixelMatchesColor(1992, 1435, (85, 214, 142), tolerance=0): print("Color found") else: print("Color not found")
内容的提问来源于stack exchange,提问作者Fede777
相关产品推荐
相关产品推荐

