我正在写一个小的python脚本来截图一个游戏窗口(将在后台/最小化),并执行一些简单的模板匹配和ocr使用cv2。
我正在调用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:

10-05 20:24