使用Python读取多个图片组成的文件夹

在很多情况下,我们可能需要读取一个包含多个图片的文件夹。例如,我们可能需要将这些图片用于图像分类、计算机视觉任务或者简单的图像处理。本文将介绍如何使用Python读取多个图片组成的文件夹,并提供一些示例代码来解决这个问题。

准备工作

在开始之前,我们首先需要确保Python环境已经安装了所需的库。在本文中,我们将使用Pillow库,它是一个强大的图像处理库,可以方便地处理多种图像格式。

可以使用以下命令来安装Pillow库:

pip install Pillow

读取文件夹中的所有图片

首先,我们需要找到包含多个图片的文件夹,并遍历这个文件夹中的所有文件。可以使用os模块来完成这个任务。以下是一个示例代码,它可以读取文件夹中的所有图片,并将它们保存在一个列表中:

import os
from PIL import Image

def read_images_from_folder(folder_path):
    images = []
    for filename in os.listdir(folder_path):
        img_path = os.path.join(folder_path, filename)
        if os.path.isfile(img_path):
            try:
                img = Image.open(img_path)
                images.append(img)
            except:
                print(f"Failed to read image: {img_path}")
    return images

# 指定文件夹路径
folder_path = "path/to/folder"
images = read_images_from_folder(folder_path)

# 打印读取到的图片数量
print(f"Read {len(images)} images from folder.")

在上述代码中,read_images_from_folder函数接受一个文件夹路径作为输入,并返回一个包含所有图像的列表。函数通过使用os.listdir列出文件夹中的所有文件名,并使用os.path.join将文件夹路径与文件名组合起来。然后,它使用Image.open函数来尝试打开每个文件,并将其添加到图像列表中。如果某个文件不是有效的图像文件,那么Image.open函数将会引发异常,我们可以在except代码块中捕获并处理这个异常。

在示例代码的最后,我们使用len函数打印读取到的图片数量。

对读取的图片进行处理

一旦我们读取了文件夹中的所有图像,我们就可以对它们进行各种处理。以下是一些示例代码,展示了如何对读取的图片进行简单的处理操作:

缩放图片

def resize_images(images, size):
    resized_images = []
    for img in images:
        resized_img = img.resize(size)
        resized_images.append(resized_img)
    return resized_images

# 缩放图片到指定大小
resized_images = resize_images(images, (256, 256))

在上述代码中,resize_images函数接受一个图像列表和一个目标大小作为输入,并返回一个缩放后的图像列表。函数使用resize方法将每个图像缩放到指定的大小,并将缩放后的图像添加到新的列表中。

转换图片格式

def convert_images(images, format):
    converted_images = []
    for img in images:
        converted_img = img.convert(format)
        converted_images.append(converted_img)
    return converted_images

# 将图片转换为JPEG格式
converted_images = convert_images(images, "JPEG")

在上述代码中,convert_images函数接受一个图像列表和一个目标格式作为输入,并返回一个转换后的图像列表。函数使用convert方法将每个图像转换为指定的格式,并将转换后的图像添加到新的列表中。

总结

通过使用Python的os模块和Pillow库,我们可以方便地读取包含多个图片的文件夹,并对这些图片进行各种处理操作。本文提供了一些示例代码来展示如何实现这些操作。希望本文能帮助你解决读取多个图片组成的文件夹的问题。