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
[*] --> 读取图片
读取图片 --> 图像处理
图像处理 --> [*]