gpt4 book ai didi

python - 将 2d 转换为 3d 数组后保存图像问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:14 24 4
gpt4 key购买 nike

我已将 2d 数组(arr2d)转换为 3d 数组(arr3d)并使用下面的代码另存为图像。 arr2d 是 float64 类型。为什么保存的图像不是彩色图像?

arr3d[:, :, 0] = arr3d[:, :, 1] = arr3d[:, :, 2] = arr2d
arr3d=arr3d*255
im=Image.fromarray(np.maximum(np.minimum(arr3d, 255), 0).astype(np.uint8))
im.save(“sample.png”)

最佳答案

该图像不是彩色图像,因为每个像素的红绿和蓝色 channel 具有相同的值。

使用im=Image.fromarray(arr3d)时:

  • arr3d[:, :, 0] 是红色像素平面。
  • arr3d[:, :, 1] 是绿色像素平面。
  • arr3d[:, :, 2] 是蓝色像素平面。

当使用arr3d[:, :, 0] = arr3d[:, :, 1] = arr3d[:, :, 2] = arr2d时,您要确保red=每个像素的绿色=蓝色

R=G=B 的像素颜色为灰色

我创建了以下代码来重现该问题:

import numpy as np
from PIL import Image

arr2d = np.random.rand(50, 50) # Create 50x50 2D array with random values in range [0, 1]
arr3d = np.zeros((50, 50, 3))
arr3d[:, :, 0] = arr3d[:, :, 1] = arr3d[:, :, 2] = arr2d
arr3d = arr3d*255
im = Image.fromarray(np.maximum(np.minimum(arr3d, 255), 0).astype(np.uint8))
im.save("sample.png")

结果 - 所有像素均为灰色:
enter image description here

使用某些颜色获取结果的示例:

arr3d[:, :, 0] = np.random.rand(50, 50);arr3d[:, :, 1] = np.random.rand(50, 50);arr3d[:, :, 2] = np.random.rand(50, 50)

enter image description here

关于python - 将 2d 转换为 3d 数组后保存图像问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60310531/

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