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

时间:2012-10-18 14:55:56

标签: python pygame rgb

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

2 个答案:

答案 0 :(得分:8)

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

pxarray = pygame.PixelArray(surface)

逻辑 PixelArray对象是以整数形式存储的RGB值的二维数组。

  

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

pxarray[x, y] = 0xFF00FF
pxarray[x, y] = pygame.Color(255, 0, 255)
pxarray[x, y] = (255, 0, 255)

它还提到:

  

但是,仅返回像素的整数值。所以,比较像素和   特殊颜色,需要首先使用Surface.map_rgb()映射颜色   为Surface创建的PixelArray对象的方法。

这意味着每当你没有对数组进行赋值时,你需要使用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)):
     ...

希望这有帮助。

答案 1 :(得分:0)

将 Surface 包裹在 PixelArray 中后,unmap_rgb 函数可以将像素转换为 pygame.Color 对象。

例如:

import pygame
pygame.init()
image = pygame.image.load('example.png')
pixel = pygame.PixelArray(image)
center = int(image.get_width()/2), int(image.get_height()/2)
colour = image.unmap_rgb(pixel[center])
print(str(colour))