读取单色PNG到numpy数组



我正在尝试将单色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()时,我希望看到("R",)的元组。相反,我看到的是("P",)。我还不知道什么是"P"但是我想这和我的问题有关。

"p"表示PIL模式处于"调色板"状态。更多信息在这里:PIL中"P"模式和"L"模式的图像有什么区别?

从"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)

最新更新