Python如何批量读取本地图片

介绍

在使用Python进行图像处理或机器学习任务时,我们通常需要将大量的本地图片加载到内存中进行处理。本文将介绍如何使用Python批量读取本地图片,以及如何使用常见的图像处理库进行简单的图像处理操作。

准备工作

在开始之前,我们需要安装以下两个Python库:

  • Pillow:一个用于图像处理的库,提供了读取、写入和处理图像的功能。
  • os:Python的内置库,用于与操作系统进行交互,包括访问文件和目录。

你可以使用以下命令安装这两个库:

pip install pillow

批量读取本地图片

首先,我们需要将需要批量读取的图片放置在一个文件夹中,例如images文件夹。

我们可以使用os库中的listdir函数列出指定文件夹中的所有文件名,然后根据文件名构建文件的完整路径。然后,使用Pillow库中的open函数打开图片文件,读取图像数据。

下面是一个示例代码,演示如何批量读取本地图片:

from PIL import Image
import os

# 图片文件夹路径
image_folder = "images"

# 批量读取本地图片
def read_images(image_folder):
    images = []
    for filename in os.listdir(image_folder):
        if filename.endswith(".jpg") or filename.endswith(".png"):
            # 构建文件的完整路径
            image_path = os.path.join(image_folder, filename)
            # 打开图片文件,读取图像数据
            image = Image.open(image_path)
            images.append(image)
    return images

# 调用函数读取本地图片
images = read_images(image_folder)

图像处理操作

一旦将本地图片读取到内存中,我们可以使用Pillow库提供的丰富的图像处理功能对图像进行操作。

下面是一些常见的图像处理操作示例:

  • 调整图像大小:使用resize函数调整图像的大小。可以指定目标宽度和高度,也可以指定缩放比例。
# 调整图像大小为指定的宽度和高度
resized_image = image.resize((width, height))

# 调整图像大小为指定的缩放比例
resized_image = image.resize((int(image.width * scale), int(image.height * scale)))
  • 转换图像格式:使用convert函数将图像转换为其他格式,例如JPEG、PNG等。
# 将图像转换为JPEG格式
jpeg_image = image.convert("JPEG")

# 将图像转换为PNG格式
png_image = image.convert("PNG")
  • 裁剪图像:使用crop函数裁剪图像。可以指定裁剪区域的左上角和右下角坐标,也可以指定裁剪区域的宽度和高度。
# 裁剪图像为指定区域
cropped_image = image.crop((x1, y1, x2, y2))

# 裁剪图像为指定的宽度和高度
cropped_image = image.crop((x, y, x + width, y + height))
  • 旋转图像:使用rotate函数旋转图像。可以指定旋转角度,也可以使用transpose函数进行翻转操作。
# 顺时针旋转图像
rotated_image = image.rotate(angle)

# 水平翻转图像
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)

# 垂直翻转图像
flipped_image = image.transpose(Image.FLIP_TOP_BOTTOM)

总结

本文介绍了如何使用Python批量读取本地图片,并使用Pillow库进行简单的图像处理操作。通过使用os库列举文件夹中的文件名,并结合Pillow库的函数,我们可以轻松地读取和处理大量的本地图片。

状态图

stateDiagram
    [*] --> 读取图片
    读取图片 --> 图像处理
    图像处理 --> [*]