在重塑图像阵列时感到困惑

时间:2017-01-24 21:32:03

标签: python conv-neural-network numpy

目前我正在尝试运行ConvNet。稍后馈送神经网络的每个图像被存储为列表。但目前列表是使用三个for循环创建的。看看:

im = Image.open(os.path.join(p_input_directory, item))
pix = im.load()

image_representation = []

# Get image into byte array
for color in range(0, 3):
    for x in range(0, 32):
        for y in range(0, 32):
            image_representation.append(pix[x, y][color])

我很确定这不是最好最有效的方法。因为我必须坚持上面创建的列表的结构,所以我考虑使用numpy并提供另一种方法来获得相同的结构。

from PIL import Image
import numpy as np

image = Image.open(os.path.join(p_input_directory, item))
image.load()
image = np.asarray(image, dtype="uint8")
image = np.reshape(image, 3072)
# Sth is missing here...

但我不知道如何重塑和连接image以获得与上面相同的结构。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

一种方法是转移轴,这在fortran模式下基本上是扁平的,即反向的方式 -

image = np.asarray(im, dtype="uint8")
image_representation = image.ravel('F').tolist()

要仔细查看该函数,请查看numpy.ravel documentation