显示一个 2d numpy 数组,其中内容是元组作为图像

问题描述 投票:0回答:2

我有一个 2d (M * N) numpy 数组,其中每个单元格包含一个长度为 3 的元组。该元组包含每个像素的 R、G 和 B 值,例如

A[0,0] = (0, 255, 0)

有没有办法将此数组显示为图像,可能不需要先将其转换为 3d (M * N *3) 数组?

python image numpy image-processing numpy-ndarray
2个回答
1
投票

来自 PIL 的图像应该能够从 M*N 矩阵以 RGB 作为元组生成图片。

from PIL import Image
import numpy as np
matrix = np.array([[(100,100,100),(100,100,100),(100,100,100)],[(100,100,100),(100,255,100),(100,100,100)],[(100,100,100),(100,100,100),(100,100,100)]], dtype=np.uint8)
im = Image.fromarray(matrix, 'RGB')
im.show()

0
投票

要将表示 RGB 分量的二维元组数组恢复为图像,我使用了这种方法:

from PIL import Image
import numpy as np

dt = np.dtype([('R', 'u1'), ('G', 'u1'), ('B', 'u1')])

Image.fromarray(array2D.astype(dt), 'RGB')

其中

array2D
是代表图像的 2D 数组。


更新:更详细的解释、速度比较和讨论在这里:将图像导入为 RGB 元组的 2D 数组而不是 3D 值数组

© www.soinside.com 2019 - 2024. All rights reserved.