我有一个RGB数组,我想用fromarray
导入PIL
并保存到磁盘:
import numpy as np
from PIL import Image
from PIL.PngImagePlugin import PngInfo
a = np.array([[[255, 0, 0], [0, 255, 0]], # Red Green
[[0, 0, 255], [0, 0, 0]]]) # Blue Black
img = Image.fromarray(a, mode="RGB")
metadata = PngInfo() # I need to add metadata, thus the use of Pillow and **not cv2**
metadata.add_text("key", "value")
img.save("test.png", pnginfo=metadata)
但是输出图像是Red Black Black Black
而不是Red Green Blue Black
。
为什么?为什么?
如何正确导入PIL对象中的uint8 RGB数组并保存为PNG?
注意:不是convert RGB arrays to PIL image的重复。
NB 2:我也尝试了RGBA数组,但结果是类似的(输出图像是Red Black Black Black
而不是Red Green Blue Black
):
a = np.array([[[255, 0, 0, 255], [0, 255, 0, 255]], # Red Green
[[0, 0, 255, 255], [0, 0, 0, 255]]]) # Blue Black
1条答案
按热度按时间y4ekin9u1#
似乎你的数组需要是uint 8类型,那么一切都正常。
工作示例:
干杯!干杯!