首页 文章

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

提问于
浏览
1

我有一个形状为numpy数组(3072,1)或(3,32,32)的图像 . 这包括前1024个值对应 Red component ,后跟1024 Green component ,后跟1024 Blue component . 这1024个值对应于32x32大小的图像 . 我想知道是否有任何pythonic方式或快捷方式将此数组转换为32x32x3大小数组,以便我可以将数组保存到实际图像?

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

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

因为原始图像是形状的(3,32,32),所以像素值会混乱,保存后我不会得到实际图像

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

2 回答

  • 5

    使用transposition

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

    这意味着,表示原始轴的顺序为 0, 1, 2 ,您希望它们按照 1, 2, 0 的顺序重新排列 - 也就是说,将第一个轴(颜色值)移动到右侧 .

  • 1

    你可以使用np.rollaxis

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

相关问题