将图像从(28,28,4)转换为2D平面阵列并写入csv

时间:2017-08-07 04:08:25

标签: python image numpy scipy neural-network

以下代码成功将图像文件转换为numpy数组,然后再转换回图像。

with open(BASE_DIR + '/web/images/testImage.png') as file:
    img = Image.open(file)
    pixels = numpy.asarray(img)
    img = Image.fromarray(pixels)
    img.show()

大。布埃诺。真棒。

图片为(28, 28)。但是,当我将图像转换为numpy数组时,尺寸为(28, 28, 4)

要调整像素大小(28,28),我在下面添加以下行:

with open(BASE_DIR + '/web/images/testImage.png') as file:
    img = Image.open(file)
    pixels = numpy.asarray(img)
    pixels = numpy.resize(pixels, (28,28))  # this line here!!!
    img = Image.fromarray(pixels)
    img.show()

但是,当我显示图像时,它会全部扭曲并搞砸。

我的目标是将2D多声道图像(28,28,4)的大小调整为平坦(28,28)图像阵列,并将像素数据写入csv。

IA如何将(28,28)图像读取为表示真实(28,28)数组的numpy像素数据,或者B)调整numpy数组的大小,以便在写入a时图像不会失真CSV?

这个要点包含我一直在玩的当前代码和数据:

https://gist.github.com/daino3/b671b2d171b3948692887e4c484caf47

编辑:

当我将图像转换为黑白时使用:

with open(BASE_DIR + '/web/images/testImage_1502036630.png') as file:
    img = Image.open(file).convert('L')  # convert to B&W
    img.show()

我丢失了所有像素数据值,图像完全是黑色。

1 个答案:

答案 0 :(得分:1)

我的猜测是您的图片处于RGBa模式。尝试:

img = Image.open(file).convert('L')