Pytorch 读取指定文件夹中的图片

1. 文件夹与源代码的位置关系

2. 代码 (0.py)

import matplotlib.pyplot as plt
import torch
import torchvision
from torchvision import datasets, transforms

data_transfrom = transforms.Compose([  # 对读取的图片进行以下指定操作
    transforms.Resize((300, 300)),     # 图片放缩为 (300, 300), 统一处理的图像最好设置为统一的大小,这样之后的处理也更加方便
    transforms.ToTensor(),             # 向量化,向量化时 每个点的像素值会除以255,整个向量中的元素值都在0-1之间      
])

img = datasets.ImageFolder('.', transform=data_transfrom)  # 指明读取的文件夹和读取方式,注意指明的是到文件夹的路径,不是到图片的路径

imgLoader = torch.utils.data.DataLoader(img, batch_size=2, shuffle=False, num_workers=1)  # 指定读取配置信息

inputs, _ = next(iter(imgLoader))
print(_[0].item())           # 打印返回的值
inputs = inputs / 2 + 0.5    # 使得整个图像的像素值都在0.5之上,使得处理后的图像偏白
inputs = torchvision.utils.make_grid(inputs)   # make_grid()实现图片的拼接,并去除原本Tesor中Batch_Size那一维度,因为操作之前的inputs是4维的, make_grid()返回的结果是3维的, shape为(3, h, w) 3代表通道数, w,h代表拼接后图片的宽高
inputs = inputs.numpy().transpose((1, 2, 0))   # transpose((1, 2, 0)) 是将(3, h, w) 变为 (h ,w, 3), 因为这种格式才是图像存储的标准格式
plt.imshow(inputs)           # 展示,这里会一块展示batch_size张图片,因为它们是一块被读出来的
plt.show()

3. 运行结果

 

4. 利用imageio读取图片,转换为tensor

1. imageio读取的图片在内存的中形式为numpy.array()的形式
2. numpy.array()和tensor很容易进行转换
import image

img_arr = image.imread(img_path)

img_tensor = torch.tensor(img_arr)

img_tensor = img_tensor.transpose(0, 2)  # 将第0维和第2维进行交换

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值