给定img返回tensor
from torchvision.io import read_image
# read_image(img_path)
img_tensor = read_image("10.jpg") #torch.Size([3, 512, 512])
show tensor
定义show函数
import torch
import numpy as np
import matplotlib.pyplot as plt
from torchvision.io import read_image
import torchvision.transforms.functional as F
def show(imgs):
# 传入img_tensor eg:torch.Size([3, 512, 512]),不要含有batch维
if not isinstance(imgs, list):
imgs = [imgs]
fig, axs = plt.subplots(ncols=len(imgs), squeeze=False)
for i, img in enumerate(imgs):
img = img.detach()
img = F.to_pil_image(img)
axs[0, i].imshow(np.asarray(img))
axs[0, i].set(xticklabels=[], yticklabels=[], xticks=[], yticks=[])
使用实例
import torch
import numpy as np
import matplotlib.pyplot as plt
from torchvision.io import read_image
import torchvision.transforms.functional as F
def show(imgs):
# 传入img_tensor eg:[3, 512, 512],不要含有batch维
if not isinstance(imgs, list):
imgs = [imgs]
fig, axs = plt.subplots(ncols=len(imgs), squeeze=False)
for i, img in enumerate(imgs):
img = img.detach()
img = F.to_pil_image(img)
axs[0, i].imshow(np.asarray(img))
axs[0, i].set(xticklabels=[], yticklabels=[], xticks=[], yticks=[])
img_tensor = read_image("10.jpg") #torch.Size([3, 512, 512])
show(img_tensor)
tensor to pil image并保存
import torchvision.transforms.functional as F
def tensor2pil(img_tensor):
img_tensor = img_tensor.detach()
img_pil = F.to_pil_image(img_tensor)
return img_pil
#保存
img_pil = tensor2pil(img_tensor)
img_pil.save("1.jpg")
并列展示
个人常用
import torch
import numpy as np
import matplotlib.pyplot as plt
from torchvision.io import read_image
import torchvision.transforms.functional as F
from torchvision import transforms
plt.rcParams["savefig.bbox"] = 'tight'
# tensor img to show
def show(imgs):
if not isinstance(imgs, list):
imgs = [imgs]
fig, axs = plt.subplots(ncols=len(imgs), squeeze=False)
for i, img in enumerate(imgs):
img = img.detach()
img = F.to_pil_image(img)
axs[0, i].imshow(np.asarray(img))
axs[0, i].set(xticklabels=[], yticklabels=[], xticks=[], yticks=[])
# img2tensor
img = read_image("10.jpg") #torch.Size([3, 512, 512])
# 经过若干处理
img_s = get_residue(img.unsqueeze(0), r_dim=1)#torch.Size([1, 3, 512, 512])
# 并列显示
from torchvision.utils import make_grid
g = make_grid([img,img_s.squeeze(0)])
show(g)
# tensor2pil to save
rain_p = F.to_pil_image(img_s.squeeze(0))
rain_p.save("rain_p.jpg")