pytorch python 打开指定文件夹,对文件里的图像数据进行随机翻转,旋转30度、60度、90度,随机平移和缩放0.5倍、1倍、1.5倍的完整代码
时间: 2024-04-09 11:32:51 浏览: 47
下面是使用PyTorch和Python来打开指定文件夹,并对文件夹中的图像数据进行随机翻转、旋转和随机平移、缩放的完整代码示例:
```python
import os
import random
from PIL import Image
import torchvision.transforms as transforms
# 指定文件夹路径
folder_path = "your_folder_path"
# 定义数据增强的transform
transform = transforms.Compose([
transforms.RandomHorizontalFlip(),
transforms.RandomVerticalFlip(),
transforms.RandomRotation(degrees=[30, 60, 90]),
transforms.RandomAffine(degrees=0, translate=(0.1, 0.1), scale=(0.5, 1.5)),
])
# 遍历文件夹中的所有图像文件
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
# 读取图像
image = Image.open(file_path)
# 应用数据增强
augmented_images = []
for _ in range(3): # 进行3次不同旋转角度的增强
augmented_image = transform(image)
augmented_images.append(augmented_image)
# 保存增强后的图像
for i, augmented_image in enumerate(augmented_images):
augmented_file_path = os.path.join(folder_path, f"augmented_{i}_{file_name}")
augmented_image.save(augmented_file_path)
```
在上述代码中,你需要将`your_folder_path`替换为你要处理的文件夹的路径。然后,使用`transforms.Compose`将多个数据增强操作组合成一个transform对象。其中,`transforms.RandomRotation`的`degrees`参数传入一个包含旋转角度的列表,这里使用了30度、60度和90度。`transforms.RandomAffine`的`scale`参数传入一个范围,这里使用了0.5倍、1倍和1.5倍的缩放范围。
在增强图像时,由于要进行不同角度的旋转增强,所以将增强后的图像保存在一个列表中。最后,根据不同的旋转角度保存增强后的图像文件,文件名前缀为"augmented_i_",其中i表示旋转角度的索引。
请确保你已经安装了PyTorch和Pillow库(可以通过`pip install torch torchvision Pillow`进行安装)。你还可以根据需要调整其他数据增强操作的参数,如翻转、平移和缩放的范围。
阅读全文