Python 图像处理实战

Python 图像处理

Daoman Python AI 的实际项目中,图像处理是一项基础且关键的技能。无论是为网页生成缩略图、自动为图片添加水印,还是为深度学习模型预处理数据集,Python 都能通过强大的第三方库高效完成任务。

1. 入门知识:颜色与像素

在开始编写代码前,我们需要理解数字图像的两个核心概念:

  • 颜色模型 (RGB/RGBA):计算机通过红(Red)、绿(Green)、蓝(Blue)三种色光的叠加来组合成万千色彩。RGBA 中的 A (Alpha) 代表透明度。

    常见颜色 RGB 值速查表

    名称RGB 值名称RGB 值
    白色(255, 255, 255)红色(255, 0, 0)
    绿色(0, 255, 0)蓝色(0, 0, 255)
    灰色(128, 128, 128)黄色(255, 255, 0)
    黑色(0, 0, 0)紫色(128, 0, 128)
  • 像素 (Pixel):图像的最小单位。想象一下,一张精美的照片其实是由无数个颜色不同的小方格拼凑而成的,这些小方格就是像素。


2. 使用 Pillow 处理图像

Pillow 是 Python 图像处理的首选库,它是著名的 PIL (Python Imaging Library) 的现代化分支。

安装指令

pip install pillow

2.1 基础操作:读取、裁剪与缩放

Pillow 的核心是 Image 模块。你可以轻松获取图像的格式、尺寸和模式。

from PIL import Image

# 1. 打开图像
img = Image.open('guido.jpg')
print(f"格式: {img.format}, 尺寸: {img.size}, 模式: {img.mode}")

# 2. 裁剪图像 (定义左、上、右、下四个坐标)
img.crop((80, 20, 310, 360)).show()

# 3. 生成缩略图 (保持比例缩放)
img.thumbnail((128, 128))
img.save('thumb.jpg')

# 4. 旋转与翻转
img.rotate(45).show()
img.transpose(Image.FLIP_LEFT_RIGHT).show() # 水平翻转

2.2 进阶操作:粘贴与滤镜

你可以将一张图像的一部分粘贴到另一张图像上,或者应用预设的滤镜效果。

from PIL import ImageFilter

# 滤镜示例:轮廓效果
img.filter(ImageFilter.CONTOUR).show()

# 滤镜示例:模糊效果
img.filter(ImageFilter.BLUR).show()

3. 使用 Pillow 绘图与文字

通过 ImageDraw 模块,你可以把图像当成画布,绘制几何图形或添加文字。这在自动生成验证码、给照片打标签时非常有用。

from PIL import Image, ImageDraw, ImageFont

# 1. 创建纯色画布
canvas = Image.new('RGB', (400, 300), (255, 255, 255))
drawer = ImageDraw.Draw(canvas)

# 2. 绘制图形
drawer.line((0, 0, 400, 300), fill=(0, 0, 255), width=3)
drawer.rectangle((50, 50, 150, 150), outline=(255, 0, 0), width=5)
drawer.ellipse((200, 50, 300, 150), fill=(0, 255, 0))

# 3. 绘制文字 (需指定本地字体文件路径)
# font = ImageFont.truetype('arial.ttf', 40)
# drawer.text((100, 200), "Hello Python", fill=(0, 0, 0), font=font)

canvas.show()

总结

  • Pillow 适合处理日常的图像变换、裁剪、格式转换和简单的绘图任务。
  • 坐标系统:图像左上角为 (0, 0),向右向下延伸。
  • 延伸思考:如果你需要进行更高级的图像识别(如人脸识别、目标检测),建议在掌握 Pillow 后进一步学习 OpenCV,它是处理视频流和实时视觉任务的工业标准。