手把手教你用Python做图像处理

文摘   2024-11-04 19:01   广东  

点击下方卡片关注

▲点击上方卡片关注我

想用Python处理图片,但不知从何下手?别担心,这就带你玩转图像处理的基础操作。咱们用 PIL库 来处理图片,这可是Python图像处理的“老大哥”了。



MAOGE

part01

PIL库安装和导入


安装特别简单,在命令行里敲一行代码就搞定:


pip install pillow

导入也很直接:


from PIL import Image

MAOGE

part02

基础图片操作


看看最常用的几个操作:


# 打开一张图片

img = Image.open('cat.jpg')

# 查看图片信息

print(f“图片大小: {img.size}”) # 输出宽和高

print(f“图片格式: {img.format}”) # 比如JPEG、PNG

print(f“图片模式: {img.mode}”) # RGB、RGBA等

# 裁剪图片

cropped = img.crop((100, 100, 400, 400)) # 左上右下的坐标

# 调整大小

resized = img.resize((800, 600))

# 旋转图片

rotated = img.rotate(45) # 顺时针旋转45度

# 保存处理后的图片

resized.save('new_cat.jpg')

⚠️ 小贴士:


  • crop()裁剪时坐标是个元组,别写成列表了

  • resize()的参数是宽度在前,高度在后

  • 旋转默认会裁掉超出范围的部分,加个expand=True参数就能看到完整图片



MAOGE

part03

图片滤镜效果


给图片加点滤镜效果,让它更有范儿:


from PIL import ImageEnhance

# 调整亮度

enhancer = ImageEnhance.Brightness(img)

brightened = enhancer.enhance(1.5) # 1.5倍亮度

# 调整对比度

enhancer = ImageEnhance.Contrast(img)

contrasted = enhancer.enhance(1.2) # 1.2倍对比度

# 调整色彩饱和度

enhancer = ImageEnhance.Color(img)

colored = enhancer.enhance(1.4) # 1.4倍饱和度


MAOGE

part04

图片合成和水印


给图片加个水印,或者把多张图片拼在一起:


# 创建空白画布

canvas = Image.new('RGB', (800, 400), 'white')

# 把两张图片粘到画布上

canvas.paste(img1, (0, 0))

canvas.paste(img2, (400, 0))

# 添加水印

font = ImageFont.truetype(“arial.ttf”, 36)

draw = ImageDraw.Draw(canvas)

draw.text((10, 10), “我的水印”, font=font, fill='red')

⚠️ 小贴士:


  • 粘贴图片时注意尺寸,别超出画布范围

  • 水印字体文件要确保系统里有,不然会报错

  • 中文水印要用支持中文的字体文件



MAOGE

part05

批量处理图片


写个简单的脚本,批量处理文件夹里的图片:


import os

from PIL import Image

def process_images(input_dir, output_dir):

    # 创建输出目录

    if not os.path.exists(output_dir):

        os.makedirs(output_dir)

    # 遍历输入目录

    for filename in os.listdir(input_dir):

        if filename.endswith(('.jpg', '.png')):

            # 打开图片

            with Image.open(os.path.join(input_dir, filename)) as img:

                # 处理图片(这里以调整大小为例)

                processed = img.resize((800, 600))

                # 保存处理后的图片

                output_path = os.path.join(output_dir, f'processed_{filename}')

                processed.save(output_path)

# 使用示例

process_images('input_images', 'output_images')

⚠️ 小贴士:


  • 记得用with语句打开图片,这样处理完会自动关闭

  • 大量图片处理时,注意释放内存

  • 建议加个进度提示,不然处理大量图片时像没响应一样


图像处理可玩性超强,能做的事情太多了。掌握这些基础操作,就能开发各种好玩的图片处理工具。代码写得多了,慢慢就能找到感觉,整出更花哨的效果。


往期回顾

1.FastAI:深度学习神器,这个Python库让AI入门更简单!

2.Pandas:Python数据分析的王者,掌握它就掌握了数据

3.Paramiko:SSH连接,Python的远程控制

墨香玄
每日陪伴,聊聊关于车的这些事,理性与感性双管齐下,饮茶品文,有缘共谈!
 最新文章