从pygame中的显示获取图像数组

问题描述

我有一个简单的pygame环境的pong游戏。我想从pygame.display获取每个实例的图像的numpy数组。我找不到提供整个显示的numpy数组的方法。谢谢。

pong

解决方法

使用pygame.surfarray.pixels2dpygame.surfarray.array2dpygame.surfarray.pixels3dpygame.surfarray.array3dpygame.Surface对象创建像素阵列(请参见pygame.surfarray模块) :

import pygame

# [...]

window = pygame.display.set_mode()
array2D = pygame.surfarray.array2d(window)
array3D = pygame.surfarray.array3d(window)

虽然array* Surface 对象创建像素的副本,但是pixel*创建一个新数组,直接引用 Surface 对象。
*2d版本生成一个二维数组,每个像素由单个整数值表示。 *3d版本生成一个三维数组,其中每个颜色通道均由一个整数值表示。