Python是否有办法(至少在OpenCV或PIL中)以至少15 fps或更高的速度连续抓取全部或部分屏幕的帧?我已经看到它是用其他语言完成的,因此从理论上讲应该是可能的。

我不需要将图像数据保存到文件中。实际上,我只希望它输出一个包含原始RGB数据的数组(如numpy数组或类似的东西),因为我将只将其发送到大型LED显示器(可能在调整大小之后)。

最佳答案

mss还有另一种解决方案,可以提供更好的帧速率。 (在装有MacOS Sierra的Macbook Pro上进行了测试)

import numpy as np
import cv2
from mss import mss
from PIL import Image

mon = {'top': 160, 'left': 160, 'width': 200, 'height': 200}

sct = mss()

while 1:
    sct.get_pixels(mon)
    img = Image.frombytes('RGB', (sct.width, sct.height), sct.image)
    cv2.imshow('test', np.array(img))
    if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break

10-08 18:55