首页  >  文章  >  后端开发  >  如何将 PIL 图像转换为 NumPy 数组并返回?

如何将 PIL 图像转换为 NumPy 数组并返回?

DDD
DDD原创
2024-11-23 07:33:08379浏览

How to Convert a PIL Image to a NumPy Array and Back?

将 PIL 图像转换为 NumPy 数组

问题:

如何将 PIL 图像转换为 NumPy 数组执行更快的逐像素转换,然后在修改后将其加载回 PIL 图像数组?

答案:

转换为 NumPy 数组:

要将 PIL 图像转换为 NumPy 数组,请使用以下代码:

import numpy as np
from PIL import Image

pic = Image.open("foo.jpg")
pix = np.array(pic)

这将创建一个包含像素值的形状(高度、宽度、通道)的 3D 数组。

转换回 PIL 图像:

要将修改后的数组加载回 PIL 图像,有多种方法:

1.使用 Image.putdata():

将数组转换回元组序列:

data = list(tuple(pixel) for pixel in pix)
pic.putdata(data)

2.使用 Image.fromarray()(PIL 1.1.6 或更高版本):

只需将修改后的数组分配给图像:

pic = Image.fromarray(pix)

附加说明:

  • PIL Image 的 getdata() 方法返回一个扁平化数组,因此您需要重塑它以获得 3D 数组。
  • np.array(pic) 中的 NumPy 数组将通道轴作为最后一个维度,而 getdata() 方法假定通道轴作为第一个维度。
  • Image.fromarray() 方法提供更快的转换,特别是对于大图像。

以上是如何将 PIL 图像转换为 NumPy 数组并返回?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn