【问题标题】:Convert 2d array to collored image in python在python中将二维数组转换为彩色图像
【发布时间】:2019-03-29 04:40:45
【问题描述】:

我有这样的二维整数列表:

list1 = [[1, 30, 50], [21, 45, 9], [97, 321, 100]]

接下来我要把它转换成 numpy 数组:

myarr = np.asarray(list1)

接下来我将使用 PIL 将其转换为 Image,如下所示:

img = Image.fromarray(myarr, "I")
img.save("my.png")

问题是我不想要灰度图像。我不知道如何将其转换为彩色图像。我必须使用 eny 地图功能或其他东西吗?

【问题讨论】:

  • 是什么样的图像?如果你想要一个漂亮的数值颜色图,matplotlib 中有一些简单的东西。如果它是一张照片,那么它就不仅仅是一个编程问题。
  • 彩色图像的形状为(N,M,3)。您的列表形状为 (N,M),因此不代表 RGB 图像。没有足够的信息。您可以像np.stack((np.array(list1),)*3,-1)一样堆叠灰度图像以获得RGB形状,但它仍然是灰色的。

标签: python image numpy python-imaging-library


【解决方案1】:

实现这一点的方法是使用 numpy

import numpy as np
list1 = [[1, 30, 50], [21, 45, 9], [97, 321, 100]]
list1 = np.array(list1).reshape(-1, 3)

现在list1 将具有 N x 3 的形状,其中 3 维是 RGB。如果你知道最终图像的大小,你可以这样做

np.array(list1).reshape(N, M, 3)

它会根据您的需要将您的阵列重新塑造成 RGB。然后,一旦你有了 numpy 数组,你的数组就变成了图像的形状,并且可以将其保存为 PNG 等。

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 2020-12-26
    • 2016-06-20
    • 1970-01-01
    • 2018-09-24
    • 2017-04-16
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多