@Dietrich答案是有效的,但是在某些情况下,它将翻转图像。由于转置运算符会反转索引,因此如果图像存储在
RGB x rows xcols转置运算符中,将会产生
cols x rows x RGB(这是旋转后的图像,而不是所需的结果)。
>>> arr = np.random.uniform(size=(3,256,257))*255
注意
257用于可视化目的。
>>> arr.T.shape(257, 256, 3)>>> arr.transpose(1, 2, 0).shape(256, 257, 3)
最后一个是在某些情况下可能需要的,因为它会重新排列图像(
rows x cols x RGB在示例中)而不是完全转置图像。
>>> arr = np.random.uniform(size=(3,256,256))*255>>> arr = np.ascontiguousarray(arr.transpose(1,2,0))>>> img = Image.fromarray(arr, 'RGB')>>> img.save('out.png')可能甚至不需要强制转换为连续数组,但是最好在保存图像之前确保图像是连续的。



