Python 图像处理入门:从加载到基本操作

在这里插入图片描述

概述

在本教程中,我们将介绍如何使用Python进行基本的图像处理任务。我们将使用Pillow库来加载、显示和修改图像。PillowPIL(Python Imaging Library)的一个分支,提供了丰富的图像处理功能。

安装 Pillow 库

首先,确保安装了Pillow库。如果尚未安装,可以通过pip安装它:

pip install Pillow

加载图像

示例代码

加载一个图像文件,并显示它的基本信息。

from PIL import Image

def load_image(filename):
    with Image.open(filename) as img:
        # 获取图像的基本信息
        format_ = img.format
        mode = img.mode
        size = img.size
        
        # 显示图像
        img.show()
        
        return {
            "format": format_,
            "mode": mode,
            "size": size
        }

if __name__ == "__main__":
    metadata = load_image("example.jpg")
    print(f"Image format: {metadata['format']}")
    print(f"Image mode: {metadata['mode']}")
    print(f"Image size: {metadata['size']}")

运行结果

假设example.jpg是位于脚本同一目录下的一张图片,运行上面的脚本会输出如下信息:

Image format: JPEG
Image mode: RGB
Image size: (800, 600)

并且会弹出一个窗口显示图像。

说明

  • Image.open():这是一个类方法,用于打开并加载一个图像文件。这里使用with语句来确保文件被正确关闭。

  • Image.format:返回图像的格式字符串,例如JPEG、PNG等。

  • Image.mode:返回图像的颜色模式,例如RGB、L(灰度)、CMYK等。

  • Image.size:返回一个元组,表示图像的宽度和高度,单位为像素。

  • Image.show():显示图像,这通常用于调试目的,因为实际应用中可能需要将图像保存到磁盘或发送到客户端。

修改图像尺寸

示例代码

接下来展示如何调整图像的尺寸。

from PIL import Image

def resize_image(filename, new_size):
    with Image.open(filename) as img:
        # 创建一个新的图像对象,指定新的尺寸
        resized_img = img.resize(new_size, Image.ANTIALIAS)
        resized_img.save("resized_" + filename)
        print(f"Resized image saved as 'resized_{filename}'")
        
        return resized_img.size

if __name__ == "__main__":
    new_size = (400, 300)
    new_size = resize_image("example.jpg", new_size)
    print(f"New image size: {new_size}")

运行结果

运行上述脚本后,会在同一目录下生成一张名为resized_example.jpg的新图片,其尺寸为400x300像素,并输出:

Resized image saved as 'resized_example.jpg'
New image size: (400, 300)

说明

  • Image.resize():这个方法创建一个新的图像,具有指定的尺寸。Image.ANTIALIAS选项用于提高缩放图像的质量。

  • Image.save():将图像保存到指定的文件名。这里我们通过添加前缀resized_来区分原始文件。

图像旋转

示例代码

演示如何旋转图像。

from PIL import Image

def rotate_image(filename, angle):
    with Image.open(filename) as img:
        # 旋转图像
        rotated_img = img.rotate(angle, expand=True)
        rotated_img.save("rotated_" + filename)
        print(f"Rotated image saved as 'rotated_{filename}'")
        
        return rotated_img.size

if __name__ == "__main__":
    angle = 45
    new_size = rotate_image("example.jpg", angle)
    print(f"New image size: {new_size}")

运行结果

运行脚本后,会在同一目录下生成一张名为rotated_example.jpg的新图片,该图片相对于原图旋转了45度,并输出:

Rotated image saved as 'rotated_example.jpg'
New image size: (600, 600)

说明

  • Image.rotate():这个方法旋转图像。expand=True表示生成的新图像足以包含整个旋转后的图像,即使旋转角度不是90度的倍数。

颜色转换

示例代码

接下来展示如何将彩色图像转换为灰度图像。

from PIL import Image

def convert_to_grayscale(filename):
    with Image.open(filename) as img:
        # 转换为灰度模式
        grayscale_img = img.convert('L')
        grayscale_img.save("grayscale_" + filename)
        print(f"Grayscale image saved as 'grayscale_{filename}'")
        
        return grayscale_img.mode

if __name__ == "__main__":
    mode = convert_to_grayscale("example.jpg")
    print(f"New image mode: {mode}")

运行结果

运行脚本后,会在同一目录下生成一张名为grayscale_example.jpg的新图片,该图片是原图的灰度版本,并输出:

Grayscale image saved as 'grayscale_example.jpg'
New image mode: L

说明

  • Image.convert(mode):这个方法转换图像的颜色模式。这里我们使用'L'模式,表示将图像转换为灰度模式。

结论

通过以上示例,我们展示了如何使用Python的Pillow库进行基本的图像处理操作。您可以根据需要扩展这些示例,添加更多的功能,如色彩调整、滤镜效果等。此外,您还可以探索Pillow文档中的其他功能,以实现更复杂的图像处理任务。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值