gpt4 book ai didi

python - 通过 Image.fromarray 在 PIL 中将浮点图像数组转换为 int

转载 作者:行者123 更新时间:2023-12-04 09:56:22 27 4
gpt4 key购买 nike

我有一个形状为 3,256,256 的 PyTorch 张量其中 3 是 channel 数,图像尺寸为 256,均为浮点值。

我正在尝试将其输入网络并使用 PIL 进行一些转换。为此,我这样做:

img = Image.fromarray((255*imgs[i]).numpy().astype(np.uint8))

但我得到:
TypeError: Cannot handle this data type: (1, 1, 256), |u1

当我检查 (255*imgs[i]).numpy().astype(np.uint8) 的输出时,但我确实看到,例如:
[[[ 62  57  59 ...  63  46  36]
[ 72 71 67 ... 80 76 82]
[ 58 63 63 ... 145 152 169]
...
[238 240 243 ... 7 7 7]
[241 239 240 ... 5 5 6]
[241 243 242 ... 4 3 5]]

[[ 83 78 80 ... 86 70 61]
[ 91 90 85 ... 95 93 98]
[ 80 83 80 ... 141 150 168]
...
[176 178 181 ... 14 14 14]
[177 176 178 ... 15 15 17]
[179 180 180 ... 13 13 15]]

[[147 141 143 ... 150 136 128]
[147 149 148 ... 154 149 154]
[141 149 148 ... 178 182 196]
...
[129 131 134 ... 43 43 43]
[130 130 131 ... 45 45 47]
[133 134 133 ... 44 44 46]]]

从长远来看,我不是图像专家,我现在正在努力解决这个问题。

最佳答案

您需要匹配维度的顺序,而不仅仅是dtype . PIL.Image期望其 RGB 图像具有形状 h x w x3 - 最后一个 channel 尺寸,而 更喜欢将图像表示为 3x h x w - channel 维度第一。

因此你需要:

img = Image.fromarray((255*imgs[i]).numpy().astype(np.uint8).transpose(1, 2, 0))

关于python - 通过 Image.fromarray 在 PIL 中将浮点图像数组转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61912083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com