2022年的tensor to pil image 和 img to tensor和show tensor

该博客介绍了如何使用PyTorch进行图像处理,包括从文件读取图像转换为Tensor,使用`show`函数进行显示,并通过`tensor2pil`函数保存为图片。此外,还展示了如何使用`make_grid`并列显示多个图像,以及如何将Tensor图像转换为PIL图像进行保存。
摘要由CSDN通过智能技术生成

给定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")

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值