python数字图像处理之图像的批量处理

  • Post category:Python

Python数字图像处理之图像的批量处理

在数字图像处理中,经常需要对大量图像进行批量处理。本文将介绍使用Python语言实现图像的批量处理,具体包括以下内容:

  1. 读取图像文件
  2. 对图像进行处理
  3. 批量保存处理后的图像

本文将使用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实现图像批量处理的完整攻略,希望能对大家有所帮助。