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

Pillow ImageGrab捕获Steam游戏窗口失效问题求助

问题原因及解决思路

核心原因

Steam启动的游戏大多采用DirectX/Vulkan等硬件加速渲染API,并默认运行在独占全屏模式。这类模式下,游戏画面不经过Windows的GDI桌面合成链路,而你使用的ImageGrab是基于GDI的屏幕捕获工具,只能读取初始帧缓存,无法获取实时更新的游戏画面,因此出现捕获画面停留在第一帧的情况。

解决思路

1. 切换游戏窗口模式

将游戏设置为窗口化或无边框窗口模式,此时游戏画面会通过桌面合成器渲染,ImageGrab就能正常捕获实时帧。操作步骤:

  • 进入游戏设置,找到显示/画面选项,切换窗口模式为"窗口化"或"无边框"
  • 重启游戏后重新测试捕获功能

2. 替换为支持硬件加速捕获的库

使用针对游戏场景优化的捕获库,比如mss(支持DirectX捕获,兼容性更好),示例代码如下:

import cv2
import numpy as np
from mss import mss
import pyautogui

x, y = pyautogui.size()
# 定义捕获区域,和原代码保持一致
monitor = {
    "top": int(y/2 - 250),
    "left": int(x/2 - 250),
    "width": 500,
    "height": 500
}

with mss() as sct:
    while True:
        # 捕获指定区域
        sct_frame = sct.grab(monitor)
        # 转换为OpenCV兼容的BGR格式
        frame = np.array(sct_frame)
        frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)
        
        cv2.imshow("", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

cv2.destroyAllWindows()

3. 关闭Steam游戏内覆盖

Steam的游戏内覆盖可能干扰屏幕捕获流程,尝试关闭后测试:

  • 打开Steam客户端,进入「设置」→「游戏中」
  • 取消勾选「在游戏中启用Steam界面」
  • 重启游戏和你的捕获程序

4. 以管理员权限运行捕获程序

部分游戏的防作弊机制或权限限制会阻止普通权限程序捕获屏幕,右键点击你的Python脚本/程序,选择「以管理员身份运行」后测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:52:21