导入电脑整个文件夹图片扩增到显示扩增后的图片并存起来
时间: 2023-08-15 20:07:41 浏览: 105
目标检测数据扩增(copy-paste方式)
要导入电脑上整个文件夹中的图片并应用数据扩增方法后显示扩增后的图片,并将其存储起来,可以使用PIL库和torchvision库来完成。以下是一个示例代码:
```python
import os
from PIL import Image
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
# 文件夹路径
folder_path = 'path/to/folder'
# 定义变换管道
transform = transforms.Compose([
transforms.RandomHorizontalFlip(),
transforms.RandomCrop(224),
transforms.ToTensor(), # 转换为Tensor格式
])
# 创建保存文件夹
save_folder = 'path/to/save/folder'
os.makedirs(save_folder, exist_ok=True)
# 遍历文件夹中的图片
for filename in os.listdir(folder_path):
# 图片路径
image_path = os.path.join(folder_path, filename)
# 加载图片
image = Image.open(image_path)
# 应用变换
augmented_image = transform(image)
# 将Tensor格式转为NumPy数组,并将通道维度放在最后(C, H, W -> H, W, C)
augmented_image = augmented_image.permute(1, 2, 0).numpy()
# 显示扩增后的图片
plt.imshow(augmented_image)
plt.axis('off') # 关闭坐标轴
plt.show()
# 存储扩增后的图片
save_path = os.path.join(save_folder, filename)
augmented_image_pil = Image.fromarray((augmented_image * 255).astype('uint8'))
augmented_image_pil.save(save_path)
```
在这个示例中,我们首先指定了文件夹的路径`folder_path`,该文件夹包含要导入和扩增的图片。
然后,我们定义了一个变换管道,包括随机水平翻转、随机裁剪和转换为Tensor格式。
接下来,我们创建了一个保存图片的文件夹`save_folder`,如果该文件夹不存在则会自动创建。
然后,我们使用`os.listdir`遍历文件夹中的图片。对于每张图片,我们通过`os.path.join`构建出图片的完整路径。
然后,我们使用PIL库的`Image.open`方法加载图片。
接着,我们应用变换管道,使用`transform`方法将加载的图片应用了数据扩增。
接下来,我们将扩增后的图片转换为NumPy数组,并使用`plt.imshow`方法将其显示出来。注意关闭坐标轴可以提供更清晰的图片显示。
最后,我们通过`Image.fromarray`方法将NumPy数组转换为PIL图像对象,并使用`save`方法将扩增后的图片存储到指定的文件夹中。
你可以根据自己的需求定义自己的变换管道,并使用PIL库和torchvision库来导入、扩增、显示和存储电脑上整个文件夹中的图片。
阅读全文