Python Imaging Library (PIL) 全面指南:PIL基础入门-图像处理与数据预处理
图像裁剪与调整
学习目标
通过本课程,学员将掌握如何使用Python Imaging Library (PIL)进行图像的基本处理,包括裁剪、调整大小和旋转图像。这些技能对于图像处理、数据分析和机器学习项目中的数据预处理非常有用。
相关知识点
- 图像裁剪与调整
学习内容
1 图像裁剪与调整
1. 1 使用PIL裁剪图像
在图像处理中,裁剪是一个非常常见的操作,它可以从原始图像中提取特定的区域。这在去除不需要的背景、聚焦于图像的特定部分或准备图像以适应特定的显示尺寸时非常有用。PIL库提供了简单而强大的方法来实现这一点。
1.1.1 裁剪的基本概念
裁剪图像涉及到指定一个矩形区域,该区域定义了想要保留的图像部分。这个矩形通常由左上角的坐标(x, y)和宽度(width)与高度(height)来定义。在PIL中,使用crop()
方法来执行裁剪操作。crop()
方法接受一个四元组参数,该参数定义了裁剪区域的左、上、右和下边界。
1.1.2 实践操作
首先,需要安装PIL库。PIL库在Python 3中通常被称为Pillow,可以通过pip安装:
%pip install p
接下来,加载一张图像,并从中裁剪出一个特定的区域。假设有一张名为example.png
的图像,想要从该图像中裁剪出一个100x100像素的区域,该区域的左上角位于(50, 50)。
from PIL import Image# 打开图像文件
img = Image.open('example.png')# 定义裁剪区域
area = (50, 50, 150, 150) # (left, upper, right, lower)# 裁剪图像
cropped_img = img.crop(area)# 显示裁剪后的图像
cropped_img.show()# 保存裁剪后的图像
cropped_img.save('cropped_example.jpg')
这段代码首先导入了Image
模块,然后使用Image.open()
方法打开图像文件。接着,定义了一个裁剪区域,该区域是一个四元组,指定了裁剪的左、上、右和下边界。crop()
方法用于裁剪图像,show()
方法用于显示裁剪后的图像,最后save()
方法将裁剪后的图像保存到文件中。
1.2 调整图像大小
调整图像大小是图像处理中的另一个基本操作,它可以将图像缩放到不同的尺寸。这在准备图像以适应不同的显示设备或减少文件大小时非常有用。PIL库提供了resize()
方法来调整图像的大小。
1.2.1 调整大小的基本概念
调整图像大小涉及到指定新的宽度和高度。在PIL中,resize()
方法接受一个元组参数,该参数定义了新的宽度和高度。此外,还可以指定一个可选的重采样滤波器,以提高调整大小后的图像质量。
1.2.2 实践操作
使用PIL库调整一张图像的大小。假设有一张名为example.png
的图像,想要将其调整为200x200像素。
from PIL import Image# 打开图像文件
img = Image.open('example.png')# 定义新的尺寸
new_size = (200, 200)# 调整图像大小
resized_img = img.resize(new_size)# 显示调整大小后的图像
resized_img.show()# 保存调整大小后的图像
resized_img.save('resized_example.jpg')
这段代码首先导入了Image
模块,然后使用Image.open()
方法打开图像文件。接着,定义了一个新的尺寸,该尺寸是一个元组,指定了新的宽度和高度。resize()
方法用于调整图像的大小,show()
方法用于显示调整大小后的图像,最后save()
方法将调整大小后的图像保存到文件中。
1.3 旋转图像
旋转图像是图像处理中的另一个常见操作,它可以将图像旋转到不同的角度。这在调整图像方向或创建视觉效果时非常有用。PIL库提供了rotate()
方法来旋转图像。
1.3.1 旋转的基本概念
旋转图像涉及到指定一个旋转角度。在PIL中,rotate()
方法接受一个角度参数,该参数定义了旋转的角度。此外,还可以指定一个可选的扩展参数,以确保旋转后的图像不会被裁剪。
1.3.2 实践操作
使用PIL库旋转一张图像。
from PIL import Image# 打开图像文件
img = Image.open('example.png')# 定义旋转角度
angle = 90# 旋转图像
rotated_img = img.rotate(angle, expand=True)# 显示旋转后的图像
rotated_img.show()# 保存旋转后的图像
rotated_img.save('rotated_example.jpg')
这段代码首先导入了Image
模块,然后使用Image.open()
方法打开图像文件。接着,定义了一个旋转角度,该角度是一个整数,指定了旋转的角度。rotate()
方法用于旋转图像,expand=True
参数确保旋转后的图像不会被裁剪。show()
方法用于显示旋转后的图像,最后save()
方法将旋转后的图像保存到文件中。