将单一颜色的 png 读入一个 numpy 数组

read a single color png into a numpy array

我正在尝试将单色 PNG 文件加载到 numpy 数组中。对于大多数 PNG 文件,下面的代码可以正常工作。但是,如果 PNG 文件仅包含一种颜色,则 numpy 数组中每个像素的 RGBA 值为 [0, 0, 0, 255],这会导致黑色图像。对于“红色”颜色,如何获取正确的 RGBA 值?例如[255, 0, 0, 255]

from PIL import image
import numpy as np

red_image = Image.open("red.png")
arr = np.asarray(red_image)

调用 red_image.getBands() 时,我希望根据 documentation 看到一个 ("R",) 的元组。相反,我看到 ("P",)。我还不知道什么是“P”频道,但我认为它与我的问题有关。

'P' 表示 PIL 模式处于“palettised”。更多信息在这里:.

从“P”转换为“RGBA”解决了我的问题。

from PIL import image
import numpy as np

red_image = Image.open("red.png")
red_image = red_image.convert("RGBA") # added this line
arr = np.asarray(red_image)