如何从pygame.surface获取numpy RGB颜色数组

mat*_*usc 8 python arrays pygame numpy

我有代码:

import pygame.camera
pygame.camera.init()
cam = pygame.camera.Camera(pygame.camera.list_cameras()[0])
cam.start()
img = cam.get_image()
Run Code Online (Sandbox Code Playgroud)

img变量是

<Surface(640x480x24 SW)>
Run Code Online (Sandbox Code Playgroud)

从pygame找到了get numpy数组,但我仍然不知道如何将它有效地转换为numpy RGB颜色数组.

Div*_*kar 5

要从中获取3D图像数据class pygame.Surface,请使用.array3d()以及文档状态 -

将像素复制到3d数组中

array3d(Surface) - >数组

因此,你可以这样做 -

imgdata = pygame.surfarray.array3d(img)
Run Code Online (Sandbox Code Playgroud)

请注意,结果imgdata可能会显示高度和宽度切换.要解决这个问题,交换前两个轴,就像这样 -

imgdata.swapaxes(0,1)
Run Code Online (Sandbox Code Playgroud)