gpt4 book ai didi

python - 将 numpy 数组转换为 rgb 图像

转载 作者:行者123 更新时间:2023-12-05 00:13:03 26 4
gpt4 key购买 nike

我有一个 numpy值范围为 0-255 的数组.我想将其转换为 3 channel RGB 图像。我使用 PIL Image.convert()函数,但它会将其转换为灰度图像。

我正在使用 Python PIL库转换 numpy使用以下代码将数组转换为图像:

imge_out = Image.fromarray(img_as_np.astype('uint8'))
img_as_img = imge_out.convert("RGB")

输出将图像转换为 3 个 channel ,但显示为黑白(灰度)图像。如果我使用以下代码
img_as_img = imge_out.convert("R")

表明
error conversion from L to R not supported

如何将 numpy 数组正确转换为 RGB 图片?

最佳答案

您需要一个大小合适的 numpy 数组,这意味着一个带有整数的 HxWx3 数组。我使用以下代码和输入对其进行了测试,似乎按预期工作。

import os.path
import numpy as np
from PIL import Image


def pil2numpy(img: Image = None) -> np.ndarray:
"""
Convert an HxW pixels RGB Image into an HxWx3 numpy ndarray
"""

if img is None:
img = Image.open('amsterdam_190x150.jpg'))

np_array = np.asarray(img)
return np_array


def numpy2pil(np_array: np.ndarray) -> Image:
"""
Convert an HxWx3 numpy array into an RGB Image
"""

assert_msg = 'Input shall be a HxWx3 ndarray'
assert isinstance(np_array, np.ndarray), assert_msg
assert len(np_array.shape) == 3, assert_msg
assert np_array.shape[2] == 3, assert_msg

img = Image.fromarray(np_array, 'RGB')
return img


if __name__ == '__main__':
data = pil2numpy()
img = numpy2pil(data)
img.show()

amsterdam_190x150.jpg

我在用:
  • Python 3.6.3
  • numpy 1.14.2
  • 枕头 4.3.0
  • 关于python - 将 numpy 数组转换为 rgb 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49271913/

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