不能用numpy

时间:2016-10-01 06:42:55

标签: python arrays numpy

我想用代码将图像(17x15)更改为2d数组:

from PIL import Image
import numpy as np

list = []
im = Image.open('plus1.jpg')
row,col =  im.size
print(row,col)
for i in range (row):
   for j in range (col):
        r, g, b = im.getpixel((i, j))
        list.append([r,g,b]) 
print(list)
print(len(list))
list = np.array(list)
print(list)
list.reshape(17,15)

它可以改为1D数组,但当我使用reshape制作带有list.reshape(17,15)的2D数组时出现错误:

ValueError: total size of new array must be unchanged

大小为17x15,更改为1D数组有255个元素,那么为什么会出现错误以及如何使其正常运行?

1 个答案:

答案 0 :(得分:1)

您的图片是17x15,因此有255像素。对于每个像素,有三个颜色值(r,g,b)。这意味着您的数组list的形状为(255,1,3)。这意味着它包含755个元素,当您尝试将其重新整形为(17,15)时会引发错误,这不会保留元素的数量。要获得前两个维度与图像(17,15)相同的数组,以及包含rgb值的第三个轴,您应该写:

np.reshape(list, (17,15,3) )