求高人指点,python怎么高效实时截图?

我想达到每10ms以内截一张图,做yolo推理 我在网上找了好多方案,我现在使用的是win32,但这个截图时间为30-40ms之间。还有人说读取显存的…
关注者
5
被浏览
2,452

4 个回答

可以尝试使用 mss (Python Screen Capture)库,这是一个用于在Windows、Linux和macOS上进行快速屏幕捕捉的库。

以下是一个使用 mss 库的简单示例,展示如何以每10毫秒截取一张图像:

首先,确保你已经安装了 mss 库:

bash
pip install mss

然后,你可以使用以下代码:

python
import time
import mss
import cv2
# 创建一个 mss 视频对象
with mss.mss() as sct:
    # 设置截图区域
    monitor = {"top": 0, "left": 0, "width": 1920, "height": 1080}
    while True:
        start_time = time.time()
        # 截取屏幕图像
        screenshot = sct.shot(output=f"screenshot_{int(time.time())}.png", mon=monitor)
        # 在这里添加你的 YOLO 推理代码,使用 screenshot 变量
        # 计算截图和处理时间
        elapsed_time = time.time() - start_time
        print(f"Time taken: {elapsed_time * 1000:.2f} ms")
        # 休眠至下一个截图时间
        time.sleep(max(0, 0.01 - elapsed_time))

此示例中,截图区域在 monitor 变量中定义,可以根据实际需求进行调整。在循环中,我们使用 sct.shot 方法来截取屏幕图像,并在截图和处理之间添加你的 YOLO 推理代码。