PIL加载灰度图像的RGB矩阵

时间:2016-07-07 09:12:04

标签: python image-processing matrix python-imaging-library

如何加载图像的RGB矩阵。基本上,如果我有一个224x224图像(灰度),我需要它的RGB矩阵,所以我想要一个由3个元素元组组成的224x224矩阵。我试过了:

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矩阵?

1 个答案:

答案 0 :(得分:3)

我对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]是蓝色频道