我正在编写一个小的python脚本来截取游戏窗口的截图(将在后台/最小化)并使用cv2执行一些简单的模板匹配和ocr。 我目前正在调用im的导入如下:
import -window windowID png:-
截取非活动窗口的屏幕截图。
然而,这需要近4秒,并且很容易成为我脚本中最慢的部分,为100倍。
是否有任何替代导入或者可能采用另一种更快的方法?
我已经尝试过graphicsmagick(结果比imagemagick慢)和xwd(即使指定了windowID也没有捕获未聚焦的窗口)
Link to full python script(第44行是截图拍摄的地方)
答案 0 :(得分:3)
您正在ImageMagick中执行所有PNG编码和zlib压缩,然后在OpenCV中再次解压缩它。如果您发现两者之间更紧密地共享的格式,我想你会做得更好。
具体来说,ImageMagick可以直接为您提供RGB像素,然后您可以使用cvtColor()
在OpenCV中轻松转换为BGR。
import -window windowID rgb:
您必须查询窗口尺寸才能获得宽度和高度。
或者,您可以使用PPM格式,OpenCV也可以在没有任何库的情况下读取,其中包含维度:
import -window windowID ppm: