Python基础入门 Day103 图像处理基础:使用Pillow库

62次阅读
没有评论

共计 2356 个字符,预计需要花费 6 分钟才能阅读完成。

图像处理是 Python 在数据分析、AI、Web 开发和自动化办公等领域中的常见任务之一。Pillow 是 Python 官方推荐的图像处理库,功能强大且易于使用。通过它,我们可以轻松实现图像的读取、裁剪、缩放、旋转、滤镜处理、格式转换等操作。

  1. 安装与导入 Pillow
    Pillow 是 PIL(Python Imaging Library)的一个改进版本,首先需要安装:
pip install pillow

导入方式如下:

from PIL import Image
  1. 打开与显示图像
    我们可以通过 Image.open() 方法加载图像,然后使用 show() 打开系统默认的图片查看器:
from PIL import Image

# 打开图像
img = Image.open('example.jpg')
# 显示图像
img.show()

Image.open() 会返回一个 Image 对象,通过它可以进一步操作图像,如查看属性:

print(img.format)   # 图像格式,如 JPEG、PNG
print(img.size)     # 图像尺寸 (宽, 高)
print(img.mode)     # 图像模式,如 RGB、RGBA、L
  1. 保存图像与格式转换
    可以用 save() 保存图片,也可以转换格式:
img.save('output.png')        # 保存为 PNG 格式
img.convert('L').save('gray.jpg')  # 转换为灰度图

通过 convert('L') 将彩色图像转换为灰度模式,是机器学习中常用的预处理方式。

  1. 调整图像大小与旋转
    Pillow 提供多种图像几何变换方法:
# 调整大小
resized_img = img.resize((400, 300))
resized_img.save('resized.jpg')

# 旋转图像
rotated_img = img.rotate(45)  # 顺时针旋转 45°
rotated_img.save('rotated.jpg')

# 翻转图像
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)
flipped_img.save('flipped.jpg')
  1. 裁剪图像
    可以使用 crop() 方法截取指定区域:
# 定义裁剪区域 (左, 上, 右, 下)
box = (100, 100, 400, 400)
cropped_img = img.crop(box)
cropped_img.save('cropped.jpg')

这在处理人脸识别、验证码识别等任务时非常有用。

  1. 批量缩放图像示例
    在实际工作中,我们常需要对一个文件夹下的所有图像进行批量处理,例如统一尺寸:
import os
from PIL import Image

input_folder = './images'
output_folder = './output'

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

for filename in os.listdir(input_folder):
    if filename.endswith(('.jpg', '.png', '.jpeg')):
        img_path = os.path.join(input_folder, filename)
        img = Image.open(img_path)
        img_resized = img.resize((256, 256))
        img_resized.save(os.path.join(output_folder, filename))
        print(f"{filename} 已缩放完成 ")

这段代码将所有图片批量缩放为 256×256 并保存到输出文件夹中。

  1. 图像滤镜处理
    Pillow 还支持多种滤镜效果,可以快速实现模糊、锐化等效果:
from PIL import ImageFilter

blurred = img.filter(ImageFilter.BLUR)
blurred.save('blurred.jpg')

sharpened = img.filter(ImageFilter.SHARPEN)
sharpened.save('sharpened.jpg')

滤镜在生成缩略图、识别前的图像清理等场景非常有用。

  1. 图像合并与粘贴
    我们可以创建一个新图像,然后把其他图片粘贴进去,实现拼接或水印效果:
# 创建一个新图像
new_img = Image.new('RGB', (800, 400), color='white')
# 粘贴两张图片
img1 = Image.open('example1.jpg')
img2 = Image.open('example2.jpg')
new_img.paste(img1, (0, 0))
new_img.paste(img2, (400, 0))
new_img.save('merged.jpg')
  1. 添加文本水印
    通过 ImageDraw 模块,我们可以在图片上添加文字水印:
from PIL import ImageDraw, ImageFont

img = Image.open('example.jpg')
draw = ImageDraw.Draw(img)
font = ImageFont.load_default()
draw.text((10, 10), "© Python 入门教程 ", fill="white", font=font)
img.save('watermarked.jpg')

总结:
Pillow 是 Python 图像处理的基础工具,几乎所有与图像相关的任务都可以通过它完成。从最基础的读取、保存,到复杂的裁剪、滤镜、批处理,它都提供了简洁的接口。熟练掌握 Pillow 是深入学习图像识别、计算机视觉等高级主题的重要基础。

练习与思考:

  1. 实现一个批量添加文字水印的脚本。
  2. 将指定文件夹中的所有图像转换为灰度图并保存。
  3. 尝试将两张图片拼接成一张对比图。
正文完
 0
评论(没有评论)