The mutual conversion between plt.image and tensor (tensor to plt.image) is operated by MNIST instance

1、plt.image -> numpy -> tensor

import torch
x = torch.tensor(x)  # 将 PIL 图像转换为 PyTorch 张量

Practical operation (using the real data set MNIST):

import numpy as np
import torch
import torchvision

# 加载MNIST数据集(路径需要自己修改)
train_data = torchvision.datasets.MNIST(r'C:\Users\liusl\.torch', train=True, download=True)
test_data = torchvision.datasets.MNIST(r'C:\Users\liusl\.torch', train=False, download=True)

# 获取数据
x, _ = train_data[0]
print("x:",type(x))

# tensor→numpy
x1 = np.array(x)
print("x1:",type(x1))

# numpy→Image
x2 = torch.tensor(x1)
print("x2:",type(x2))

Practical results:

insert image description here

2、tensor -> plt.image

Use the ToPILImage() method that comes with torchvision.transforms

# Image→tensor
x3 = ToPILImage()(x2)  # 续接上面的代码  把tensor类型的x2转为image类型x3
print("x3:",type(x3))

Full code:

import numpy as np
import torch
import torchvision
from torchvision.transforms import ToPILImage


# 加载MNIST数据集(路径需要自己修改)
train_data = torchvision.datasets.MNIST(r'C:\Users\liusl\.torch', train=True, download=True)
test_data = torchvision.datasets.MNIST(r'C:\Users\liusl\.torch', train=False, download=True)

x, _ = train_data[0]
print("x:",type(x))

# tensor→numpy
x1 = np.array(x)
print("x1:",type(x1))

# numpy→Image
x2 = torch.tensor(x1)
print("x2:",type(x2))

# Image→tensor
x3 = ToPILImage()(x2)
print("x3:",type(x3))

Full results:
insert image description here

Guess you like

Origin blog.csdn.net/qq_43750528/article/details/130510271