使用python的spyder代码编辑器。
当使用np.asarray( list )将像素颜色值列表保存到numpy数组时,它给出了一个具有奇怪维度的数组。
正在读取的原始图像的尺寸为(864,1089) (宽度、高度),是JPEG图像。当将此列表转换为numpy数组时,它返回一个维数为(940896,3)的数组,而当我期望一维数组具有维数(940896,)时。我不明白这3是从哪里来的.
img = Image.open('Images\satellite6.jpg')
pix = img.load()
width = img.size[0]
height = img.size[1]
pixels = []
for j in range(height):
for i in range(width):
pixels.append(pix[i,j])
pixels = np.array(pixels)
print np.shape(pixels)(940896,3)
我也是第一次发问,所以如果有什么不清楚的地方,请告诉我:)
发布于 2014-12-14 16:48:29
例如,尝试查看pix[0,0]包含的内容:
>>> img = Image.open('./edgewalker-cat.png')
>>> pix = img.load()
>>> pix
<PixelAccess object at 0x7f1afac932f0>
>>> pix[0,0]
(0, 0, 0)它的元组大小为3,因此正在逐个构造的pixels列表将转换为(宽度*高度,3)的维度。
UPD:对灰度图像的,您将得到一个简单的int值:
>>> img = Image.open('./urban-dove-gray.jpg')
>>> pix = img.load()
>>> pix[0,0]
31https://stackoverflow.com/questions/27471459
复制相似问题