微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将3通道numpy数组另存为图像

如何解决如何将3通道numpy数组另存为图像

@Dietrich答案是有效的,但是在某些情况下,它将翻转图像。由于转置运算符会反转索引,因此如果图像存储在RGB x rows x cols转置运算符中,将会产生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')

可能甚至不需要强制转换为连续数组,但是最好在保存图像之前确保图像是连续的。

解决方法

我有一个形状为numpy的数组,(3,256,256)它是分辨率为256x256的3通道(RGB)图像。我想这与保存到磁盘ImagePIL通过执行以下操作:

from PIL import Image
import numpy as np

#... get array s.t. arr.shape = (3,256)
img = Image.fromarray(arr,'RGB')
img.save('out.png')

但是,这会将尺寸为256x3的图像保存到磁盘

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。