python - 在 Python 中从屏幕捕获视频数据

标签 python opencv numpy screenshot

有没有一种方法可以使用 Python(可能使用 OpenCV 或 PIL)以至少 15 fps 或更高的速度连续抓取整个或部分屏幕的帧?我已经看到它用其他语言完成,所以理论上它应该是可能的。

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

最佳答案

使用上述所有解决方案,我无法获得可用的帧速率,直到我按以下方式修改我的代码:

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

bounding_box = {'top': 100, 'left': 0, 'width': 400, 'height': 300}

sct = mss()

while True:
    sct_img = sct.grab(bounding_box)
    cv2.imshow('screen', np.array(sct_img))

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

使用此解决方案,我可以轻松获得 20+ 帧/秒。

作为引用,请查看此链接:OpenCV/Numpy example with mss

关于python - 在 Python 中从屏幕捕获视频数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35097837/

相关文章:

python - 在子包之间共享模块的最佳实践是什么?

opencv - OpenCV-查找与静态深度倾斜矩形的角度

python - SWIG 链接器: undefined symbol :_ZN2cv8fastFreeEPv (cv::fastFree(void*))

python - 在 Windows 上为 Numpy 和 friend 使用哪个 Python?

python - 如何根据 Matplotlib 中的变量用颜色填充多边形?

python - 使用rabbitmq和twisted

c++ - OpenCV 从 Mat 图像中获取像素 channel 值

Python:类型错误 - 单例数组

python - 当矩阵a是二维矩阵,b是三维矩阵时,如何理解matmul函数?

python - 在 python 中可视化数据