如何将pygame中的曲面对象转换为RGB值的二维数组(每个像素一个值)?我已经阅读了关于PixelArrays和Surfarrays的文档,我似乎无法找到我的问题的答案。例子更受欢迎。
答案 0 :(得分:8)
pygame documentation表示,给定一个表面对象,您可以通过调用模块的PixelArray
方法创建一个PixelArray()
包装器,以提供对其像素的直接2D数组访问:< / p>
pxarray = pygame.PixelArray(surface)
逻辑 PixelArray
对象是以整数形式存储的RGB值的二维数组。
可以为
PixelArray
像素项分配原始整数值apygame.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))