数据分析与可视化(工具篇)——PIL使用指北

Python 的 Pillow 库(PIL),一个强大的图像处理库。我们将通过一系列示例来展示如何使用 Pillow 进行图像的读取、编辑、保存以及一些高级功能,如图像滤镜、图像分割等。

目录

1. Pillow 简介

2. 安装 Pillow 库

3. 基本操作 

3.1 读取图像

3.2 保存图像

3.3 调整图像大小

3.4 旋转图像

3.5 裁剪图像

3.6 调整图像亮度

4. 滤镜效果

4.1 模糊效果

4.2 锐化效果

4.3 浮雕效果

4.4 边缘检测

5. 图像分割

5.1 按矩形分割

5.2 按圆形分割


1. Pillow 简介

Pillow 是 Python Imaging Library(PIL)的一个分支,它提供了广泛的图像处理功能,包括图像缩放、旋转、剪裁、颜色转换、滤镜效果等。Pillow 库具有简单易用的 API,可以方便地对图像进行操作。

2. 安装 Pillow 库

首先,确保你已经安装了 Python。然后,你可以使用pip命令来安装 Pillow 库。在命令行中输入以下命令:

pip install pillow

3. 基本操作 

3.1 读取图像

使用 Pillow 的 Image 模块,我们可以轻松地读取图像文件。以下是一个简单的示例:

from PIL import Image  
  
# 打开图像文件  
img = Image.open('example.jpg')  
  
# 显示图像尺寸和模式  
print("尺寸:", img.size)  
print("模式:", img.mode)

3.2 保存图像

使用 save()方法,我们可以将编辑后的图像保存到磁盘上。以下是一个示例:

img.save('edited_example.jpg')

3.3 调整图像大小

使用 resize()方法,我们可以调整图像的大小。以下是一个示例:

new_img = img.resize((800, 600)) 
new_img.save('resized_example.jpg')

3.4 旋转图像

使用 rotate()方法,我们可以旋转图像。以下是一个示例:

# 旋转90度 
rotated_img = img.rotate(90) 
rotated_img.save('rotated_example.jpg')

3.5 裁剪图像

使用 crop()方法,我们可以从图像中裁剪出一个特定区域。以下是一个示例:

# 裁剪出一个矩形区域 (left, upper, right, lower) 
cropped_img = img.crop((100, 100, 400, 400)) 
cropped_img.save('cropped_example.jpg')

3.6 调整图像亮度

使用 point()方法,我们可以对图像的每个像素应用一个函数,以改变其亮度。以下是一个示例:

# 调整亮度(增加50%) 
brighter_img = img.point(lambda p: p * 1.5) 
brighter_img.save('brighter_example.jpg')

4. 滤镜效果

Pillow 库提供了许多内置的滤镜效果,可以轻松应用于图像。以下是一些示例:

4.1 模糊效果

使用 ImageFilter.BLUR 滤镜可以使图像变得模糊。以下是一个示例:

# 应用模糊滤镜 
blurred_img = img.filter(ImageFilter.BLUR) 
blurred_img.save('blurred_example.jpg')

4.2 锐化效果

使用 ImageFilter.SHARPEN滤镜可以使图像变得锐利。以下是一个示例:

# 应用锐化滤镜 
sharpened_img = img.filter(ImageFilter.SHARPEN) 
sharpened_img.save('sharpened_example.jpg')

4.3 浮雕效果

使用 ImageFilter.EMBOSS滤镜可以使图像呈现出浮雕效果。以下是一个示例:

# 应用浮雕滤镜 
embossed_img = img.filter(ImageFilter.EMBOSS) 
embossed_img.save('embossed_example.jpg')

4.4 边缘检测

使用 ImageFilter.FIND_EDGES滤镜可以检测图像中的边缘。以下是一个示例:

# 应用边缘检测滤镜 
edge_detected_img = img.filter(ImageFilter.FIND_EDGES) 
edge_detected_img.save('edge_detected_example.jpg')

5. 图像分割

Pillow 库还提供了图像分割的功能,可以将图像分割成多个区域。以下是一个简单的示例:

5.1 按矩形分割

使用 split()方法可以将图像分割成多个矩形区域。以下是一个示例:

# 按矩形分割图像 (2行, 3列) 
rows, cols = img.size[0] // 2, img.size[1] // 3 
tiles = img.split((rows, cols)) 
for i, tile in enumerate(tiles): 
tile.save(f'tile_{i}_{tile.mode}.jpg')

这个示例将图像分割成 2 行 3 列共 6 个矩形区域,并保存每个区域为单独的图像文件。

5.2 按圆形分割

使用 crop()方法和一些计算,可以将图像分割成圆形区域。以下是一个示例:

# 按圆形分割图像 (半径为100) 
circle = Image.new('RGB', (200, 200), color = 'white') 
x = 100 # x coordinate 100 
y = 100 # y coordinate 100 
circle.paste(img, (x, y, x+img.width, y+img.height)) 
circle.save('circle_image.jpg')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值