如果我有 RGB,如何获取像素的坐标?

问题描述

所以,我想检查屏幕的某个区域是否有一个像素,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()