将pygame中的图像转换为RGB值的2D数组

gan*_*dis 5 python rgb pygame

如何将pygame中的曲面对象转换为RGB值的二维数组(每个像素一个值)?我已经阅读了关于PixelArrays和Surfarrays的文档,我似乎无法找到我的问题的答案.例子更受欢迎.

mar*_*eau 8

pygame 文档说,给定一个表面对象,您可以PixelArray通过调用模块的PixelArray()方法创建一个包装器来提供对其像素的直接2D数组访问:

pxarray = pygame.PixelArray(surface)
Run Code Online (Sandbox Code Playgroud)

逻辑上,PixelArray对象是作为整数存储的RGB值的二维数组.

PixelArray像素项可以被分配一个原始整数值,一个 pygame.Color实例(用于颜色表示的对象),或一个(r, g, b[, a])元组.

pxarray[x, y] = 0xFF00FF
pxarray[x, y] = pygame.Color(255, 0, 255)
pxarray[x, y] = (255, 0, 255)
Run Code Online (Sandbox Code Playgroud)

它还提到:

但是,仅返回像素的整数值.因此,要将像素与特定颜色进行比较,需要首先使用创建对象的Surface.map_rgb() 方法来映射颜色.SurfacePixelArray

这意味着,当您没有对数组进行赋值时,即在读取像素的值时,您需要使用该Surface.map_rgb()方法从PixelArray整数值中获取RGB元组,如下面的条件所示:

# Check, if the first pixel at the topleft corner is blue
if pxarray[0, 0] == surface.map_rgb((0, 0, 255)):
    ...

希望这可以帮助.