问题描述
所以,我想检查屏幕的某个区域是否有一个像素,RGB 为“0,158,187”,如果有,我想获取它的坐标,以便我可以点击那里。
这是我尝试过的:
im = ImageGrab.grab(bBox=(268,118,1150,866))
x = 268
y = 118
while True:
x = x + 5
xy = (x,y)
if im.getpixel(xy) == (0,187):
pyautogui.click(x,y)
break
if x >= 1150:
x = 268
y = y + 5
if y >= 866:
sys.exit()
但是,我一直收到错误
"IndexError: image index out of range"
即使我在达到 1150 时不断重置 X 范围并在 Y 达到 866 时结束程序,因为没有必要继续执行它们。
解决方法
您在调用 getpixel 之前递增 x,因此当 x 大于或等于 1150 时,您首先调用 getpixel,然后测试 x 以重置范围。
我认为这样做更合适:
while True:
xy = (x,y)
if im.getpixel(xy) == (0,158,187):
pyautogui.click(x,y)
break
x = x + 5
if x >= 1150:
x = 268
y = y + 5
if y >= 866:
sys.exit()