如何将pygame中的曲面对象转换为RGB值的二维数组(每个像素一个值)?我已经阅读了关于PixelArrays和Surfarrays的文档,我似乎无法找到我的问题的答案.例子更受欢迎.
pygame 文档说,给定一个表面对象,您可以PixelArray通过调用模块的PixelArray()方法创建一个包装器来提供对其像素的直接2D数组访问:
pxarray = pygame.PixelArray(surface)
Run Code Online (Sandbox Code Playgroud)
逻辑上,PixelArray对象是作为整数存储的RGB值的二维数组.
甲
PixelArray像素项可以被分配一个原始整数值,一个pygame.Color实例(用于颜色表示的对象),或一个(r, g, b[, a])元组.Run Code Online (Sandbox Code Playgroud)pxarray[x, y] = 0xFF00FF pxarray[x, y] = pygame.Color(255, 0, 255) pxarray[x, y] = (255, 0, 255)
它还提到:
但是,仅返回像素的整数值.因此,要将像素与特定颜色进行比较,需要首先使用创建对象的
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)):
...
希望这可以帮助.