使用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
库,我们可以方便地读取包含多个图片的文件夹,并对这些图片进行各种处理操作。本文提供了一些示例代码来展示如何实现这些操作。希望本文能帮助你解决读取多个图片组成的文件夹的问题。