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

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

DDD
发布: 2024-11-23 07:33:08
原创
462 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板