【问题标题】:How to get coordinates of a pixel if I have its RGB?如果我有它的RGB,如何获取像素的坐标?
【发布时间】:2021-06-22 02:13:06
【问题描述】:

所以,我想检查屏幕的某个区域是否有 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,158,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" 

即使我在 X 范围达到 1150 时不断重置它,如果 Y 达到 866 则结束程序,因为没有继续它们的意义。

【问题讨论】:

  • 268 增加 5 最终会得到比 1150 更大的值。然后在您检查条件之前,它将尝试在不存在的坐标处im.getpixel(xy)

标签: python python-3.x python-imaging-library pyautogui


【解决方案1】:

在调用getpixel之前你是在递增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()

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 2013-04-12
    • 2018-04-25
    • 1970-01-01
    • 2020-12-22
    • 2020-12-22
    • 2021-04-13
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多