如何在Python中快速找到屏幕上的内容?

Dar*_*dor 5 python image image-processing python-3.x pyautogui

我已经尝试使用pyautogui模块和我在屏幕上定位图像的功能

pyautogui.locateOnScreen()
Run Code Online (Sandbox Code Playgroud)

但它的处理时间约为5-10秒.我还有其他方法可以更快地在屏幕上找到图像吗?基本上,我想要一个更快版本的locateOnScreen().

Tri*_*ion 6

官方文件说,它应该需要1-2秒的1920×1080的屏幕上,让你的时间似乎有点慢.我会尝试优化:

  • 使用灰度,除非颜色信息很重要(grayscale=True应该提供30% - 加速)
  • 使用较小的图像进行定位(如果已经唯一确定您需要获取的位置,则仅使用一个部分)
  • 每次新建时都不要加载需要从文件中找到的图像,而是将其保存在内存中
  • 如果您已经了解了可能的位置(例如,从之前的运行中),请传入区域参数

这些都在上面链接的文档中描述.

这还不够快你可以检查pyautogui来源,看看屏幕上的locate使用Python实现的特定算法(Knuth-Morris-Pratt搜索算法).因此,在C中实现此部分可能会导致相当明显的加速.