使用ImageGrab的Python屏幕记录

时间:2018-07-26 05:54:18

标签: python opencv pillow screen-capture

我得到了使用枕头ImageGrab在python中记录屏幕的代码,该图像在python 3.5版本中无法正常工作。视频帧的大小不断减小。like this

import numpy as np
from PIL import ImageGrab
import cv2
import time


last_time = time.time()
while(True):
    # 800x600 windowed mode
    printscreen =  np.array(ImageGrab.grab(bbox=(0,0,800,600)))
    print('loop took {} seconds'.format(time.time()-last_time))
    last_time = time.time()
    cv2.imshow('window',cv2.cvtColor(printscreen, cv2.COLOR_BGR2RGB))

    if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break

1 个答案:

答案 0 :(得分:1)

这是预期的。当您使用cv2.imshow()时,它会在屏幕上显示一个窗口,并再次在ImageGrab中捕获。因此,如果您不显示图像而仅将它们另存为视频,则不会出现此问题。

要查看其是否按预期工作,可以执行此操作,

printscreen =  np.array(ImageGrab.grab(bbox=(0,0,200,200)))

只能捕获屏幕的左上200 X 200像素。现在,将opencv输出窗口拖离屏幕的左上角,您将看不到在窗口内放置窗口的这种效果。