【问题标题】:Using PyAutoGUI to locate an image on screen regardless of the color tone / brightness无论色调/亮度如何,使用 PyAutoGUI 在屏幕上定位图像
【发布时间】:2016-10-03 18:27:38
【问题描述】:

我正在 Python (PyAutoGUI) 中寻找一种简单的方法来定位屏幕上某种类型的所有图像,但这里有一个问题,每个图像都有不同的渐变/色调,我不想采取每个图像的屏幕截图,以便在屏幕上找到它们。

这是包含我要获取坐标的图像的屏幕区域:

如您所见,每个方块都有独特的颜色(对比度)。

所以我想获取每个正方形的坐标,使 PyAutoGUI 只扫描一个图像。有什么办法可以让它忽略图像对比度的差异?比如让它变成黑白模式之类的。

代码的工作原理:

import pyautogui
coordinates = pyautogui.locateAllOnScreen("image.png") # Returns list of coordinates of all images matching image.png

【问题讨论】:

    标签: python pyautogui


    【解决方案1】:

    我会尝试以下方法:

    pyautogui.locateOnScreen("image.png", grayscale=True)
    

    这将忽略颜色值并简单地比较值的对比度。这有一个额外的好处,即比较快 30%,但可能导致误报。

    【讨论】:

    • 啊,仔细观察图像,每个单元格的颜色和对比度都发生了变化。这意味着每个单元格在除位置之外的所有不同方式上都是唯一的。如果你能提供更多关于你的目标的细节,我可能会说更多关于变通办法。
    • 是的,这很可能行不通,因为灰度颜色仍然会有所不同,并且 PyAutoGUI 会进行像素完美匹配。
    【解决方案2】:

    我知道这已经 2 岁了,但对于任何像我一样发现它的未来人类,请尝试信心论点。

    import pyautogui
    button7location = pyautogui.locateOnScreen('calc7key.png', confidence=0.9)
    button7location
    Box(left=1416, top=562, width=50, height=41)
    

    来源:https://pyautogui.readthedocs.io/en/latest/screenshot.html#the-locate-functions

    【讨论】:

      猜你喜欢
      • 2023-01-14
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多