PIL打开图像的numpy数组中的元素数量错误

时间:2016-04-04 15:01:22

标签: python numpy python-imaging-library

下面是一段代码,用于使用PIL访问图像,转换为numpy数组,然后打印数组中的元素数。

有问题的图片在这里 - image - 由100个像素(10x10)组成。但是,numpy数组包含300个元素(我期望100个元素)。我做错了什么?

import numpy as np
import PIL

impath = 'C:/Users/Ricky/Desktop/testim.tif'
im = PIL.Image.open(impath)
arr = np.array(im)
print arr.size #300

1 个答案:

答案 0 :(得分:1)

每个图像可以由3个波段组成(红 - 绿 - 蓝或RGB组合)。 由于您的图像是黑/白图像,因此这三个波段是相同的。您可以使用彩色图像查看差异。

试试看我的意思:

import matplotlib.pyplot as pyplot
# this line above import a matplotlib library for plotting image

import numpy as np
import PIL
impath = 'C:/Users/Ricky/Desktop/testim.tif'
im = PIL.Image.open(impath)
arr = np.array(im)

print arr.shape # (10, 10, 3)
print arr[:, : ,0].size # 100

# next lines actually show the image
pyplot.imshow(arr[:, : ,0], cmap='gray')
pyplot.show()