PIL加载灰度图像的RGB矩阵
问题描述:
如何加载图像的RGB矩阵。基本上,如果我有一个224x224图像(灰度),我需要它的RGB矩阵,所以我想要一个由3个元素组成的224x224矩阵。我曾尝试:PIL加载灰度图像的RGB矩阵
f="/path/to/grayscale/image"
image = Image.open(f)
new_width = 224
new_height = 224
im = image.resize((new_width, new_height), Image.ANTIALIAS)
im=np.array(im)
print(im)
和它打印:
[[195 195 195 ..., 101 104 105]
[195 195 195 ..., 102 105 106]
[194 194 194 ..., 104 109 111]
...,
[137 138 140 ..., 209 207 206]
[133 134 136 ..., 209 207 206]
[132 133 135 ..., 209 207 206]]
一些测试后,我意识到,这是因为图像是灰度的。我如何加载灰度图像的RGB矩阵?
答
我不熟悉PIL,但它看起来有一个image.Convert("RGB")
方法可能或不可能工作,所以试试看。
但是,如果你的目的是继续使用np.array
那么下面的工作:
im=np.array(im)
imRGB = np.repeat(im[:, :, np.newaxis], 3, axis=2)
它基本上重复输入np.array
到第3新中轴线,3倍。
imRGB[:,:,0]
是红色通道
imRGB[:,:,1]
是绿色通道
imRGB[:,:,2]
是蓝色通道
如果图像是灰度级是灰度级,而不是RGB。没有这样的*“灰度图像的RGB矩阵”*。但是,如果你想要**从你的灰度图像**创建一个RGB图像**,它很容易,只需重复矩阵3次,创建一个'NxMx3'np.array' –
哦。谢谢!我怎样才能做到这一点? – Sibi
我很喜欢它,但首先:你为什么要这样做?它可能会更好,继续使用它作为灰度 –