【问题标题】:Python screen record using ImageGrab使用 ImageGrab 的 Python 屏幕记录
【发布时间】:2019-01-03 00:55:45
【问题描述】:

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

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

【问题讨论】:

    标签: python opencv pillow screen-capture


    【解决方案1】:

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

    要查看它是否按预期工作,您可以这样做,

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

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

    【讨论】:

    • 它与在他们的应用程序中使用过的其他人一起工作得很好。我不想保存视频。
    • 也许他们没有在屏幕上显示。它只是将当前屏幕捕获为图像。现在,如果您在屏幕窗口内有屏幕图像,您将获得这种输出。
    • 其他人使用相同的代码,他们正在获取确切的屏幕录制视频而不是保存它们并且他们正在显示它。
    • 感谢@Ultraviolet 我刚刚将 cv2 窗口移到一边,现在可以正常工作了
    猜你喜欢
    • 2018-05-19
    • 2023-03-09
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多