pytorch可视化预处理的结果,附带张量转img的函数

import matplotlib.pyplot as plt
import numpy as np
import torchvision.transforms as T
from PIL import Image

img = Image.open('0703.jpg')
plt.imshow(np.array(img))
plt.savefig("原图.png")
plt.show()

# 原图-82
# transform = T.Resize((82,82))
# result = transform(img)
# img = plt.imshow(np.array(result))
# plt.savefig("82X82.png")
# plt.show()

# 82-裁剪
# transform = T.Compose([T.Resize((82,82)),
#                     T.RandomCrop((64,64))
# ])
# result = transform(img)
# img1 = plt.imshow(np.array(result))
# plt.savefig("裁剪.png")
# plt.show()

# 旋转15度
# transform = T.Compose([T.Resize((82,82)),
#                     T.RandomRotation(15)
# ])
# result = transform(img)
# img1 = plt.imshow(np.array(result))
# plt.savefig("旋转.png")
# plt.show()

# 遮挡
# transform = T.Compose([T.Resize((82,82)),
#                        T.ToTensor(),
#                     T.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)
# ])
# result = transform(img)
# img1 = plt.imshow(result.permute(1,2,0).numpy())
# plt.savefig("遮挡.png")
# plt.show()
"""
正常张量转PIL
"""
def tensor2img(ts):
    array = np.array(ts)
    if ts.ndim==4:
        imgs = [array[i] for i in range(array.shape[0])]
    else:
        raise ValueError("没有批次维度")
    for item in imgs:  # item代表直接读取没有批次的剩下三维==通道数长宽
        img = np.transpose(item,(1,2,0))*256 # 长宽通道数
        img = img.astype(np.int)
        plt.imshow(img)
        plt.savefig()
        plt.show()

"""
为下面量身定做的转PIL
"""

def T2I(ts):
    array = np.array(ts)
    img = np.transpose(array, (1, 2, 0)) * 256  # 长宽通道数
    img = img.astype(np.int)
    plt.imshow(img)
    plt.savefig("裁剪,补零,垂直翻转,旋转.png")
    plt.show()
# 一起操作
transform = T.Compose([
    T.Resize((32,32)),
    T.RandomCrop(32),
    T.Pad(4),
    T.RandomVerticalFlip(),
    T.RandomRotation(10),
    T.ToTensor(),  # 转成张量
    # T.Normalize()
])
result = transform(img)
img= T2I(result)  # 再转成可以可视化的图片
# img1 = plt.imshow(np.array(result))
# plt.savefig("裁剪,补零,垂直翻转,旋转.png")
# plt.show()

如果没有在transform里转成张量,就不用调用张量转PIL,后面注释掉的还要。代码是一块一块进行的。

“squeezenet“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值