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

PyAutoGUI Image Recognition - Slight issue with pixel color matching

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

试试下面这个(见这里:http://pyautogui.readthedocs.io/en/latest/screenshot.html

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

另一个可能有用的想法是将按钮的图像裁剪到在屏幕上找到它所需的绝对最小值。通常中心附近的颜色比阴影 "stable" 多。

据我所知,这也没有解决您的问题。

Do you allow TRANSPARENCY for Windows in your OS (transparency is when you can "see" through what the current application shows what是此应用程序 window 的背景 - 是许多最新操作系统版本中的默认值的功能)?

从评论我知道你有。

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

Switch the transparency feature OFF to get stable colors

就是这样 - 问题已解决(如何针对您的特定系统执行此操作是另一个与图像识别主题无关的问题)。

上面的全部或其中之一应该可以解决您的问题,否则您可能会被迫使用 pyautogui 旁边的其他图像处理工具进行自己的图像识别。

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