linux - Imagemagick 的导入速度慢得令人沮丧

标签 linux python-3.x performance imagemagick screenshot

我正在编写一个小的 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/

相关文章:

python - 在输入提示中启用箭头键导航

python - 尝试在网站中查找 ID 并出现 'chrome not reachable' 错误

python - 在 Pool.map 中使用生成器作为可迭代是否合理

c# - 在页面之间导航时 Windows 应用商店应用程序暂停

c++11正则表达式比python慢

linux - 如何在 Linux shell 脚本中声明?

linux - 具有 undefined reference 错误的 udevadm 代码

python - Keras:检索每个模型输出的准确性

c - 如果子进程在读取时不关闭管道,会发生什么情况?

linux - 用于在 ubuntu/linux 上测试移动浏览器的模拟器/仿真器