将单色 png 读入 numpy 数组

Posted

技术标签:

【中文标题】将单色 png 读入 numpy 数组【英文标题】:read a single color png into a numpy array 【发布时间】:2021-12-13 20:53:41 【问题描述】:

我正在尝试将单色 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",) 的元组,就像documentation 一样。相反,我看到的是("P",)。我还不知道什么是“P”频道,但我认为这与我的问题有关。

【问题讨论】:

【参考方案1】:

“P”表示 PIL 模式处于“托盘化”状态。更多信息在这里:What is the difference between images in 'P' and 'L' mode in PIL?。

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

【讨论】:

以上是关于将单色 png 读入 numpy 数组的主要内容,如果未能解决你的问题,请参考以下文章

将 HDF5 文件读入 numpy 数组

将文本文件读入结构化 2D numpy 数组

将包含 Numpy 数组的整个 HDF5 读入内存的最快方法

从文本文件中将数据读入 numpy 数组

python 将alphaMELTS输出文件读入numpy数组以进行绘图和分析

将嵌套的 .h5 组读入 numpy 数组