我想用代码将图像(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个元素,那么为什么会出现错误以及如何使其正常运行?
答案 0 :(得分:1)
您的图片是17x15,因此有255像素。对于每个像素,有三个颜色值(r,g,b)。这意味着您的数组list
的形状为(255,1,3)
。这意味着它包含755个元素,当您尝试将其重新整形为(17,15)
时会引发错误,这不会保留元素的数量。要获得前两个维度与图像(17,15)
相同的数组,以及包含rgb值的第三个轴,您应该写:
np.reshape(list, (17,15,3) )