使用python xy的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)
我也是发布问题的新手,所以如果有什么不清楚的地方,请告诉我:)
答案 0 :(得分:1)
尝试查看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
列表,您逐个构建项目,将被转换为(width * height,3)的维度。
UPD:在灰度图像上,您将获得一个普通的int值:
>>> img = Image.open('./urban-dove-gray.jpg')
>>> pix = img.load()
>>> pix[0,0]
31