You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Colab中使用Python实现屏幕截图?

在Google Colab中实现Python屏幕截图的可行方案

问题根源

Google Colab运行在云端无X11显示环境的虚拟机中,没有可捕获的物理桌面屏幕,这导致传统截图工具要么报错,要么输出全黑截图。

解决方案

根据需求分两种场景处理:

场景1:捕获Colab中生成的可视化内容(如matplotlib/OpenCV图像)

不需要截屏幕,直接使用工具内置的保存方法更高效:

# Matplotlib示例
import matplotlib.pyplot as plt
import numpy as np

# 生成示例图像
img = np.random.rand(100, 100)
plt.imshow(img)

# 直接保存图像
plt.savefig("matplotlib_plot.png")

# OpenCV示例
from google.colab.patches import cv2_imshow
import cv2

cv2.imwrite("cv2_image.png", img)
cv2_imshow(img)

场景2:需要捕获GUI程序的界面(必须模拟桌面环境)

先在Colab中启动虚拟X11显示服务器,再进行截图:

  1. 安装依赖
!apt-get install -y xvfb x11-utils
!pip install pyvirtualdisplay
  1. 完整截图代码
from pyvirtualdisplay import Display
import mss
import matplotlib.pyplot as plt
import numpy as np
import time

# 启动虚拟显示(设置分辨率)
display = Display(visible=0, size=(1920, 1080))
display.start()

# 运行你的GUI程序(示例:显示一个matplotlib窗口)
fig = plt.figure(figsize=(8, 6))
plt.imshow(np.random.rand(500, 500))
plt.show(block=False)  # 非阻塞模式避免卡住

# 等待窗口加载完成
time.sleep(2)

# 使用mss截图
with mss.mss() as sct:
    sct.shot(output="gui_screenshot.png")

# 读取并验证截图
import cv2
img = cv2.imread("gui_screenshot.png")
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.show()

# 关闭虚拟显示
display.stop()

为什么之前的方法失败

  • PIL/pyautogui:依赖本地X11显示服务,Colab默认无此环境,导致权限或获取图像失败。
  • mss/pyscreenshot:虽然能运行,但因为没有实际屏幕输出,只能捕获到黑色空帧。

内容的提问来源于stack exchange,提问作者Robin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:37:19