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

Python游戏录屏代码运行无反应且无报错问题排查

游戏画面捕获无反应无报错的排查方案

问题场景

运行以下代码捕获GTA5窗口画面时,程序启动后无任何可见反应,也没有报错信息输出:

import numpy as np
from PIL import ImageGrab
import cv2
import time

def screen_record(): 
    last_time = time.time()
    while(True):
        # 800x600 windowed mode for GTA 5, at the top left position of your main screen.
        # 40 px accounts for title bar. 
        printscreen =  np.array(ImageGrab.grab(bbox=(0,40,800,640)))
        print('loop took {} seconds'.format(time.time()-last_time))
        last_time = time.time()
        cv2.imshow('window',cv2.cvtColor(printscreen, cv2.COLOR_BGR2RGB))
        if cv2.waitKey(25) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            break

screen_record()

可能的原因及解决办法

  • 捕获区域不匹配:代码里bbox=(0,40,800,640)是硬编码的800x600窗口(扣除40px标题栏),如果你的游戏窗口位置、尺寸不对,ImageGrab抓的是空白区域,cv2窗口要么全黑要么被桌面覆盖,看起来像没反应。先确认游戏是800x600窗口模式且左上角在屏幕(0,40)位置,或者直接改成(0,0,1920,1080)捕获整个屏幕测试。
  • 权限不匹配:如果游戏是管理员身份运行,普通权限的Python程序抓不到它的画面,ImageGrab会返回空帧。右键Python解释器或IDE,选择“以管理员身份运行”再执行脚本。
  • 显示窗口被遮挡:cv2创建的window窗口可能被游戏窗口完全盖住,导致你误以为程序没反应。在循环里加一行cv2.moveWindow('window', 800, 0),把显示窗口移到游戏旁边就能看到。
  • 颜色转换错误:ImageGrab获取的是RGB格式图像,cv2默认用BGR显示,代码里用COLOR_BGR2RGB会导致颜色反转,极端情况可能显示全黑。改成cv2.COLOR_RGB2BGR就能正常显示。
  • 循环卡顿或阻塞:先注释掉cv2相关代码,只保留print语句,看控制台有没有输出loop took...。如果没输出,说明卡在ImageGrab.grab()了;如果有输出,问题出在cv2显示环节。
  • Pillow兼容性问题:某些Pillow版本在Win10/11上的ImageGrab.grab()存在bug,无法正常捕获屏幕。执行pip install --upgrade pillow更新到最新版本,或者换成mss库替代ImageGrab。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:25:47