gpt4 book ai didi

python - 从 headless Pygame 实例获取图像

转载 作者:行者123 更新时间:2023-12-02 16:27:25 26 4
gpt4 key购买 nike

我正在使用基于 Pygame 的游戏。在抽象 - 我需要在 headless 模式下运行它。到目前为止,我正在使用:

os.environ['SDL_VIDEODRIVER'] = 'dummy'

问题是,我无法将屏幕从游戏带到 NumPy 数组。一个 solution我发现它确实有效,但只有将图像保存到文件中,这完全没有捕获重点 - 但也许这是一个提示。我尝试过将 Surface 解析为字符串之类的方法:
pil_string_image = pygame.image.tostring(screen,"RGBA",False)
im = Image.frombytes("RGBA",(400, 400), pil_string_image)
cv2.imshow('screen', np.asarray(im))

但毕竟我只有灰屏,仅此而已。

原因是,我需要准备游戏以在 Collab 或文本环境中运行,因为我正在使用游戏屏幕做 ML 事情。

有什么办法可以正确取屏吗?或者也许我可以用另一种方式触发 headless 模式,这样我就可以像这样简单地拍摄图像?
pygame.surfarray.array3d(pygame.display.get_surface())

最佳答案

看来screenpygame.surface对象,大概从 pygame.display.set_mode(..) 返回.您可以调用surfarray使用 screen 的方法作为第一个论点。

例如。

>>> import os
>>> import pygame
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
>>> WIDTH, HEIGHT = 640, 480
>>> os.environ["SDL_VIDEODRIVER"] = "dummy"
>>> pygame.init()
(6, 0)
>>> screen = pygame.display.set_mode((WIDTH, HEIGHT))
>>> screen.fill(pygame.color.Color("black"))
<rect(0, 0, 640, 480)>
>>> print(pygame.surfarray.array3d(screen)[0])
[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]
>>> pygame.draw.line(screen, pygame.color.Color("blueviolet"), (0,0), (0,480))
<rect(0, 0, 1, 481)>
>>> print(pygame.surfarray.array3d(screen)[0])
[[146 36 255]
[146 36 255]
[146 36 255]
...
[146 36 255]
[146 36 255]
[146 36 255]]

关于python - 从 headless Pygame 实例获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60607826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com