利用python中的图像识别的高性能UI自动化

时间:2019-01-30 12:27:54

标签: python opencv automation ui-automation image-recognition

因此,在寻求基于图像识别的一些软件自动化方面,我开始学习一些使用opencv模板匹配和pyautogui库的python。我知道诸如autohotkey或autoit之类的工具可能会使工作更轻松,但是我想使用python,因为我对一般机器学习也很感兴趣。

在使用python之前,我已经研究了Sikuli,Autohotkey和Autoit,但过一会儿他们认为它们太麻烦了,无法使用。我见过用那些框架实现的软件,这些框架可以实现我想完成的任务。

我想要做的是:将一组图像匹配到当前屏幕,然后在找到它们时单击它们。该过程是无状态的,因此每次都应匹配所有模板。

要求:

  • 与任何应用程序一起使用(不仅限于Windows wpf等)
  • 多监视器功能(pyautoui遇到了麻烦)。这也使屏幕截图非常大(例如3840x1080,带有2个监视器)
  • 几乎立即(<0.5秒)找到并定位UI元素
  • 可选:不阻止鼠标/光标交互

我在python中对此的第一个实现有效,但是每个图像花费了大约1秒的时间。因此,当我遍历它们(20张图像)时,大约花费了20秒。我通过使用joblib库来使用多线程来减少这种情况。这将时间减少了75%(取决于可用的内核),但仍然太慢。同样,它似乎仍然不是一种可扩展的方法。

所以我的问题是:

  • 什么是最好的可扩展方法?
  • 这不类似于自动驾驶用例吗?其软件如何处理?
  • 我选择的工具(python,pyautogui,opencv)适合吗?

一个同事给我一个想法,将CNN(卷积神经网络)作为顶层,并且仅在分类器找到任何模板时才运行循环。这样真的可以解决问题吗?它仍然需要在某个时刻遍历所有图像。

希望我能明确我的问题。如有必要,我也可以提供代码示例。

0 个答案:

没有答案