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

标签 python arrays numpy pygame

我有代码:

import pygame.camera
pygame.camera.init()
cam = pygame.camera.Camera(pygame.camera.list_cameras()[0])
cam.start()
img = cam.get_image()

img 变量是

<Surface(640x480x24 SW)>

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

最佳答案

用于从 class pygame.Surface 抓取 3D 图像数据, 使用 .array3d() ,正如文档所述 -

Copy pixels into a 3d array

array3d(Surface) -> array

因此,你可以做 -

imgdata = pygame.surfarray.array3d(img)

请注意,生成的 imgdata 可能会在高度和宽度切换的情况下出现。要解决这个问题,请像这样交换前两个轴 -

imgdata = imgdata.swapaxes(0,1)

关于python - 如何从 pygame.surface 获取 RGB 颜色的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34673424/

相关文章:

python - 使用 Python 实现音频低延迟

python - "np.cumsum() like"- 根据实际值迭代

python - 通过 Python 的 subprocess 模块运行 mysqldump 既慢又冗长

python - Slack app_home_opened 事件调用两次

c - 字符数组必须大于必要的数组

java - 如何动态增加二维数组的大小

php - 使用explode将php字符串转换为数组,需要帮助在javascript中操作它

python - Numpy,一个2行1列的文件,loadtxt()返回1行2列

python - 根据另一列的函数在一列中查找值

python - 在获取小输出大小的同时从 Python 脚本创建可执行文件