我正在编写一个小的 python 脚本来截取游戏窗口的屏幕截图(将在后台/最小化)并使用 cv2 执行一些简单的模板匹配和 ocr。 我目前正在调用 im 的导入,如下所示:
import -window windowID png:-
截取非事件窗口的屏幕截图。
然而,这需要将近 4 秒的时间,并且很容易成为我脚本中最慢的部分,速度是原来的 100 倍。
是否有任何替代导入的方法,或者是否有其他更快的方法?
我已经尝试过 graphicsmagick(最终比 imagemagick 慢)和 xwd(即使指定了 windowID 也没有捕获未聚焦的窗口)
Link to full python script (第 44 行是截图发生的地方)
最佳答案
您在 ImageMagick 中完成所有 PNG 编码和 zlib 压缩,然后在 OpenCV 中再次解压。我想如果您找到一种在两者之间更紧密共享的格式,您会做得更好。
具体来说,ImageMagick 可以直接为您提供 RGB 像素,然后您可以使用 cvtColor()
在 OpenCV 中非常轻松地将其转换为 BGR。
import -window windowID rgb:
您必须查询窗口尺寸才能获得宽度和高度。
或者,您可以使用 PPM 格式,OpenCV 也可以在没有任何库的情况下读取它,并且包括维度:
import -window windowID ppm:
关于linux - Imagemagick 的导入速度慢得令人沮丧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49103645/