📜  来自 numpy 的 pil 图像 - Python (1)

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

来自 numpy 的 pil 图像 - Python

在Python中,Pillow是常用的图像处理库,而numpy则是常用的数学计算库。在需要进行图像处理和数据分析的任务中,常常需要将这两个库结合起来使用。本文将介绍如何使用numpy来处理Pillow中的图像。

安装依赖

在进行下一步操作之前,我们需要确保已经安装了pillow和numpy库。可以使用以下命令进行安装:

pip install pillow
pip install numpy
加载图像

我们将使用Pillow加载一张图片,并将其转化为numpy数组。以下是示例代码:

from PIL import Image
import numpy as np

img = Image.open('image.jpg') # 加载图像
img_array = np.array(img) # 将图像转化为numpy数组

在上面的代码中,我们使用Image.open()方法加载一张图像,然后调用np.array()方法将其转化为numpy数组。现在,我们可以使用numpy中的数组方法来处理图像了。

处理图像

下面是一些常见的图像处理任务以及相应的numpy代码:

裁剪图像
# 裁剪左上角100x100的部分
cropped = img_array[:100, :100]
调整图像大小
# 缩小50%
resized = np.array(Image.fromarray(img_array).resize((img_array.shape[1]//2, img_array.shape[0]//2)))
旋转图像
# 逆时针旋转90度
rotated = np.rot90(img_array)
反转图像
# 水平翻转
flipped = np.fliplr(img_array)
保存图像

需要注意的是,当我们对图像进行numpy数组操作之后,还需要将其转化回Pillow图像格式才能保存。以下是示例代码:

# 将numpy数组转化为Pillow图像格式
img = Image.fromarray(img_array)

# 保存图像
img.save('processed_image.jpg')
结论

使用numpy进行图像处理可以让我们更加灵活地操作图像,特别是在需要进行复杂数学运算的任务中。在此基础上,可以结合其他库进行更复杂的图像分析和处理。