python - PyAutoGUI 图像识别 - 像素颜色匹配的小问题

标签 python python-3.x bots image-recognition pyautogui

我试图通过使用 PyAutoGUI 的图像识别功能(pyautogui.locateCenterOnScreen)来识别简单的“确定”按钮来阻止我的机器人程序中可能出现的阻止,以消除可能的阻止阻止错误消息。然而,该功能有时只能工作,正如我通过截取不同错误消息并并排比较像素颜色发现的那样。我发现的结果是,两个不同的“确定”按钮上的像素颜色通常相差 1,这解释了图像识别函数大多数时候返回 None。我希望即使颜色相差 1 或 2 个像素也能识别图像。我知道有 tolerance 关键字参数,但是按钮的位置在屏幕上发生变化,导致很难使用 getpixel 函数,并且不能使用 tolerancelocateCenterOnScreen(据我了解)。关于我如何解决这个问题有什么建议吗?提前致谢。

最佳答案

尝试下面的方法(参见此处:http://pyautogui.readthedocs.io/en/latest/screenshot.html)

enter image description here

从评论中我知道您已经尝试过,但这并没有解决您案例中的问题。

另一个有用的想法是,将按钮的图像裁剪到在屏幕上找到它所需的绝对最小值。通常靠近中心的颜色比阴影更“稳定”。

从评论中我知道,这也没有解决您的问题。

您是否允许在您的操作系统中使用 Windows 的透明度(透明度是指您可以通过当前应用程序显示的内容“看到”该应用程序窗口背景中的内容 - 是一项功能最新操作系统的许多版本中的默认值)?

从评论中我知道你是这样的。

这可能会导致严重的识别问题。降低(到什么程度?)透明度并不能解决问题,这意味着唯一正确的方法是:

Switch the transparency feature OFF to get stable colors

就是这样 - 问题已解决(如何为您的特定系统做到这一点是另一个与图像识别主题无关的问题)。

上述所有或一个应该可以解决您的问题,如果不能,您可能会被迫使用 pyautogui 旁边的另一种图像处理工具进行自己的图像识别。

附录:[确定]按钮的形状和颜色可能取决于很多因素。如果在 Internet 浏览器中显示,它可以通过调整页面大小来更改其大小。如果用户对话框是由不同的应用程序创建的,并且应用程序不使用系统标准,则 [确定] 按钮的形状和颜色也可能不同。如上所述,如果系统使用透明度功能,颜色可能会有所不同。

关于python - PyAutoGUI 图像识别 - 像素颜色匹配的小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43654009/

相关文章:

python - 如何创建一个可以从中创建条形图的系列

python - 在服务器上运行Python脚本(是否必须在/cgi-bin/中)?

python - 无法附加到调试器中的进程

python-3.x - 如何参数化 xpath 并将其解析为文本?

javascript - 从 javascript 数组中选择一个随机项

python - 在 Python 中使用互斥锁和并发 future

python-3.x - 当执行下面的代码时,我收到消息错误str连接

python - 如何为 TfidfVectorizer 使用列表列表或集合列表?

C++ 在 kucoin API 上签名消息

c# - Azure Bot 函数 - 命名空间/依赖项错误