我试图通过使用PyAutoGUI的图像识别功能(pyautogui.locateCenterOnScreen
)来识别我的机器人程序中的可能阻塞来识别一个简单的“好”。按钮,以摆脱可能的块错误消息。但是,该功能有时只能通过截取不同的错误消息并并排比较像素颜色而发现。我发现的结果是两个不同的像素颜色' OK'按钮通常偏1,解释了大多数时间返回None
的图像识别功能。即使颜色偏差1或2像素,我也希望能够识别图像。我了解有tolerance
关键字参数,但按钮位置在屏幕上发生变化,因此很难使用getpixel
功能,而您无法使用tolerance
与locateCenterOnScreen
(据我的理解)。关于我如何解决这个问题会有任何建议吗?提前致谢。
答案 0 :(得分:0)
请尝试以下操作(请参阅此处:http://pyautogui.readthedocs.io/en/latest/screenshot.html)
从评论中我知道您已经尝试过,但这并没有解决您的问题。
另一个可能有用的想法是将按钮图像裁剪到在屏幕上找到它所需的绝对最小值。通常中心附近的颜色更加稳定"比阴影。
从我知道的评论中,这还没有解决您的问题。
您是否允许在您的操作系统中使用透明度(透明度是指您可以"请参阅"通过当前应用程序显示此应用程序窗口背景中的内容 - 是一个功能,它是许多版本的最新操作系统中的默认值)?
从我知道的评论开始。
这可能导致严重的识别问题。减少(达到什么水平?)透明度并没有解决问题,这意味着唯一正确的方法是:
关闭透明度功能以获得稳定的色彩
它的问题 - 解决了问题(如何为您的特定系统执行此操作是另一个与图像识别主题无关的问题)。
上面的全部或者一个可以解决您的问题,如果不是,您可能会被迫使用pyautogui
旁边的其他图像处理工具进行自己的图像识别。
ADDENDUM:[确定]按钮的形状和颜色可能取决于很多事情。如果在Internet浏览器中显示,则可以通过调整页面大小来更改其大小。如果用户对话框由不同的应用程序创建,如果应用程序不使用系统标准,则[确定]按钮的形状和颜色也可能不同。如上所述,如果系统使用透明度功能,颜色可能会有所不同。