Python数字图像处理之图像的批量处理
在数字图像处理中,经常需要对大量图像进行批量处理。本文将介绍使用Python语言实现图像的批量处理,具体包括以下内容:
- 读取图像文件
- 对图像进行处理
- 批量保存处理后的图像
本文将使用Python的Pillow库,该库提供了丰富的图像处理功能。以下是操作步骤:
1. 读取图像文件
使用Pillow的Image库读取图像文件,可以使用以下代码:
from PIL import Image
import os
image_dir = "path/to/directory"
image_list = os.listdir(image_dir)
for image_file in image_list:
image = Image.open(os.path.join(image_dir, image_file))
#对图像进行处理
代码中,image_dir
变量指定了包含图像文件的目录路径,os.listdir()
函数将该目录下的所有文件和文件夹的名称以字符串的形式返回,将返回值存储在image_list
列表中。使用for
循环遍历列表中的每一个文件名,使用os.path.join()
函数组合图像文件的完整路径,并使用Image.open()
函数打开图像文件,将Image
对象存储在image
变量中,然后在接下来对图像进行处理。
2. 对图像进行处理
这里以将图像转换为灰度图像为例,实现如下:
from PIL import Image
import os
image_dir = "path/to/directory"
image_list = os.listdir(image_dir)
for image_file in image_list:
image = Image.open(os.path.join(image_dir, image_file))
# 将图像转为灰度图像
gray_image = image.convert('L')
# 对图像进行其他处理
以上代码将之前打开的彩色图像使用convert()
函数转换为灰度图像,并将结果存储在gray_image
变量中。操作完毕后,可以对图像进行其他处理,例如旋转、剪切、缩放、滤波等等。
3. 批量保存处理后的图像
最后,将处理后的图像批量保存到指定目录中,代码示例如下:
from PIL import Image
import os
image_dir = "path/to/directory"
output_dir = "path/to/output/directory"
image_list = os.listdir(image_dir)
for image_file in image_list:
image = Image.open(os.path.join(image_dir, image_file))
# 将图像转为灰度图像
gray_image = image.convert('L')
# 批量保存处理后的图像
output_file = os.path.join(output_dir, image_file)
gray_image.save(output_file)
以上代码将处理后的图像使用save()
函数存储到指定目录的同名文件中,使用os.path.join()
函数组合存储路径和文件名。
示例1:将多张图片转为正方形
from PIL import Image
import os
image_dir = "path/to/directory"
output_dir = "path/to/output/directory"
image_list = os.listdir(image_dir)
for image_file in image_list:
image = Image.open(os.path.join(image_dir, image_file))
# 转为正方形
size = image.size
if size[0] != size[1]:
new_size = (max(size[0], size[1]), max(size[0], size[1]))
new_image = Image.new("RGB", new_size, (255, 255, 255))
new_image.paste(image, ((new_size[0]-size[0])//2, (new_size[1]-size[1])//2))
image = new_image
# 批量保存处理后的图像
output_file = os.path.join(output_dir, image_file)
image.save(output_file)
以上代码将多张图片转换为正方形,并保存到指定目录中。
示例2:将多张图片旋转90度
from PIL import Image
import os
image_dir = "path/to/directory"
output_dir = "path/to/output/directory"
image_list = os.listdir(image_dir)
for image_file in image_list:
image = Image.open(os.path.join(image_dir, image_file))
# 旋转90度
image = image.rotate(90,expand=True)
# 批量保存处理后的图像
output_file = os.path.join(output_dir, image_file)
image.save(output_file)
以上代码将多张图片旋转90度,并保存到指定目录中。
总结:以上就是使用Python实现图像批量处理的完整攻略,希望能对大家有所帮助。