📜  Image.fromarray (1)

📅  最后修改于: 2023-12-03 15:01:22.950000             🧑  作者: Mango

使用 Image.fromarray() 将数组转换为图像

在 Python 中,我们经常需要处理图像和数组之间的转换。 Image.fromarray() 是 Python Imaging Library(PIL)中的一种方法,可以将一个 numpy 数组(ndarray)转换为图像(Image)对象。这样就可以方便地进行各种图像处理和分析操作了。

安装 PIL

在使用 Image.fromarray() 之前,需要安装 Python Imaging Library(PIL)。

!pip install pillow
从数组转换为图像

我们可以使用 Image.fromarray() 方法将 numpy 数组转换为图像。以下是一个用例,其中我们将一个随机的二维数组转换为灰度图像。

import numpy as np
from PIL import Image

array = np.random.randint(0, 255, (512, 512), dtype=np.uint8)
img = Image.fromarray(array, mode='L')
img.show()

在上面的示例中,我们可以看到我们首先生成一个随机的 512 x 512 尺寸的二维数组。该数组元素的值在 0 和 255 之间。我们使用 np.uint8 类型指定了数组的数据类型。L 模式指定了灰度模式。

接下来,我们将该数组传递给 Image.fromarray() 方法,并使用 L 模式指定了灰度模式。最后,我们可以使用 show() 方法查看生成的图像。

从数组转换为彩色图像

使用 Image.fromarray() 方法,我们可以将 numpy 数组转换为彩色图像。以下是一个示例,其中我们将一个随机的三维数组转换为 RGB 彩色图像。

import numpy as np
from PIL import Image

array = np.random.randint(0, 255, (512, 512, 3), dtype=np.uint8)
img = Image.fromarray(array, mode='RGB')
img.show()

在上面的示例中,我们生成了一个 512 x 512 x 3 的三维数组,代表一个彩色图像。我们使用 np.uint8 类型指定了数组的数据类型。RGB 模式指定了彩色模式,其中数组的三个值分别代表了红、绿、蓝(RGB)通道的颜色值。

与前一个示例类似,我们将该数组传递给 Image.fromarray() 方法,并使用 RGB 模式指定了彩色模式。 最后,我们可以使用 show() 方法查看生成的图像。

Conclusion

Image.fromarray() 是将 numpy 数组转换为图像的强大方法,它为 Python 中的图像处理提供了一个更自然、简单的方法。它支持多种模式(灰度、RGB、RGBA等),并且非常易于使用。