[英]Convert numpy array to rgb image
我有一个数值范围为0-255
的numpy
数组。 我想将其转换为3通道RGB图像。 我使用PIL Image.convert()
函数,但是它将其转换为灰度图像。
我正在使用Python PIL
库通过以下代码将numpy
数组转换为图像:
imge_out = Image.fromarray(img_as_np.astype('uint8'))
img_as_img = imge_out.convert("RGB")
输出将图像转换为3个通道,但显示为黑白(灰度)图像。 如果我使用以下代码
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()
我在用:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.