请你给我使用仿射变换、旋转、平移、缩放、水平镜像进行批量处理图片,并且保存图片的python代码
时间: 2023-07-30 12:12:35 浏览: 117
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
当涉及到批量处理图片并进行几何变换时,可以使用Python中的图像处理库,如OpenCV和PIL(Pillow)。下面是一个示例代码,使用PIL库对一组图片进行仿射变换、旋转、平移、缩放和水平镜像,并保存变换后的图片:
```python
from PIL import Image
import os
# 定义图片文件夹路径和输出文件夹路径
input_folder = 'input_images/'
output_folder = 'output_images/'
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 定义要进行的几何变换参数
affine_matrix = [1.0, 0.5, 0.0, 0.5, 1.0, 0.0] # 仿射变换矩阵
rotation_angle = 30 # 旋转角度(单位:度)
translation = (50, 50) # 平移距离(单位:像素)
scale_factor = 1.2 # 缩放因子
horizontal_flip = True # 是否水平镜像
# 遍历图片文件夹中的所有图片文件
for filename in os.listdir(input_folder):
if filename.endswith('.jpg') or filename.endswith('.png'):
# 打开原始图片
image = Image.open(os.path.join(input_folder, filename))
# 仿射变换
image_affine = image.transform(image.size, Image.AFFINE, affine_matrix)
# 旋转
image_rotate = image.rotate(rotation_angle)
# 平移
image_translate = image.transform(image.size, Image.AFFINE, (1, 0, translation[0], 0, 1, translation[1]))
# 缩放
image_scale = image.resize((int(image.width*scale_factor), int(image.height*scale_factor)))
# 水平镜像
if horizontal_flip:
image_flip = image.transpose(Image.FLIP_LEFT_RIGHT)
else:
image_flip = image
# 保存变换后的图片
image_affine.save(os.path.join(output_folder, 'affine_' + filename))
image_rotate.save(os.path.join(output_folder, 'rotate_' + filename))
image_translate.save(os.path.join(output_folder, 'translate_' + filename))
image_scale.save(os.path.join(output_folder, 'scale_' + filename))
image_flip.save(os.path.join(output_folder, 'flip_' + filename))
```
请确保安装了PIL库(可以使用`pip install pillow`进行安装),并将上述代码中的`input_folder`和`output_folder`变量设置为你的实际路径。代码中使用的是仿射变换矩阵的示例参数,你可以根据需要自定义参数进行几何变换。此外,还可以根据需求添加其他的几何变换方法。
阅读全文