将文件夹内的多张png图像转化为tensor并保存为文件
时间: 2024-03-22 10:38:07 浏览: 135
好的,可以使用Python的Pillow库和PyTorch库来实现这个任务。以下是代码示例:
```python
from PIL import Image
import torch
import os
# 定义函数将图像转换为tensor
def image_to_tensor(image_path):
image = Image.open(image_path).convert('RGB') # 打开图像并转换为RGB模式
tensor = torch.Tensor(torch.ByteStorage.from_buffer(image.tobytes())) # 将图像数据转换为字节存储并转换为tensor
tensor = tensor.view(image.size[1], image.size[0], 3).transpose(0, 1).transpose(0, 2).contiguous() # 转换为CHW格式
return tensor.float().div(255) # 将像素值缩放到[0,1]范围内
# 定义函数将文件夹内的所有图像转换为tensor并保存
def images_to_tensors(image_folder, output_folder):
if not os.path.exists(output_folder):
os.makedirs(output_folder) # 如果输出文件夹不存在则创建
for filename in os.listdir(image_folder):
if filename.endswith('.png'): # 只处理png图像
image_path = os.path.join(image_folder, filename)
tensor = image_to_tensor(image_path)
output_path = os.path.join(output_folder, filename.split('.')[0] + '.pt') # 将tensor保存为.pt文件
torch.save(tensor, output_path)
# 调用函数将图像转换为tensor并保存
images_to_tensors('image_folder', 'tensor_folder')
```
这个代码将会把`image_folder`中的所有png图像转换为tensor,并将结果保存在`tensor_folder`文件夹中。转换后的tensor将保存为`.pt`文件。
阅读全文