将 3x32x32 大小的 numpy 图像数组转换为 32x32x3 并保存为 Python 中的实际图像

Converting 3x32x32 size numpy image array to 32x32x3 and saving to actual image in Python

我有一个形状为 (3072,1) 或 (3,32,32) 的 numpy 数组的图像。这由前 1024 个值组成,对应于 红色分量,然后是 1024 绿色分量,然后是 1024 蓝色分量 .这 1024 个值对应于 32x32 大小的图像。我想知道是否有任何 pythonic 方法或快捷方式将此数组转换为 32x32x3 大小的数组,以便我可以将数组保存为实际图像?

这里的问题是,如果我只是 重塑 它的大小 (32x32x3) by

x = numpy.reshape(x,(32,32,3))

那么像素值会乱七八糟,保存后我得不到实际图像,因为原始图像的形状是 (3,32,32)

我只是想将数组保存到实际图像中。

使用transposition:

x = numpy.transpose(x, (1, 2, 0))

这意味着,将原始轴顺序表示为 0, 1, 2,您希望它们按顺序重新排列 1, 2, 0 — 即,将第一个轴(颜色值)向右移动.

您可以使用 np.rollaxis :

In [5]: np.rollaxis(a,0,3).shape
Out[5]: (32, 32, 3)