将单一颜色的 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)
我正在尝试将单色 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)