【问题标题】:Numpy array not displaying color dimension of greyscale image after converting from PIL image从 PIL 图像转换后,Numpy 数组不显示灰度图像的颜色维度
【发布时间】:2020-10-28 07:13:24
【问题描述】:

我正在尝试将 RGB 图像转换为灰度图像,然后使用以下代码 sn-p 转换为 numpy 数组:

img = Image.open("image1.png")
img = img.convert('L')
img = np.array(img, dtype='f')
print(img.shape)

结果是一个形状为 (128, 128) 的 numpy 数组。无论如何,我可以将灰度图像转换为 numpy 数组,以便它也具有颜色通道,即形状为 (128, 128, 1)?

【问题讨论】:

  • 您可以通过img = img[..., np.newaxis] 获得该形状,但我不知道它如何为您提供颜色。
  • 为了扩展 Mark 的评论,这是一个有点令人困惑的问题,因为 (128, 128) 数组的值是这里的“颜色”。有时您需要有一个单例维度,但这通常是因为您使用的是 numpy 广播或类似的东西。添加单一维度不会改变基础数据。所以你现在从@crazycoder 得到了一个很好的答案,但我不确定你是否有解决实际问题的方法。

标签: python numpy python-imaging-library


【解决方案1】:

就像 cmets 中提到的 @Mark,如果您的数组使用 newaxis,则在末尾添加一个维度:

img=img[...,None]

None 的作用与np.newaxis 类似。它不会创建颜色,而是添加类似于单通道图像的维度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2021-04-02
    相关资源
    最近更新 更多