from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
writer = SummaryWriter("logs")
img_path = "dataset/train/ants/9715481_b3cb4114ff.jpg" # 图片路径
img_PIL = Image.open(img_path) # 打开图片(PIL格式)
print("type(img_PIL)", type(img_PIL)) # <class 'PIL.JpegImagePlugin.JpegImageFile'>
# ToTensor
trans_totensor = transforms.ToTensor() # 初始化ToTensor对象,不传入参数
tensor_img = trans_totensor(img_PIL) # 传入参数,调用__call__函数(__call__函数需要np或pil类型的参数),获得tensor格式的图片
writer.add_image("Tensor_img", tensor_img) # tensorboard显示tensor类型的图片
# print("tensor_img", tensor_img)
# Normalize
# print("tensor_img[0]:", tensor_img[0][0])
trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]) # 三个通道各自指定mean, std(参数:mean, std)
img_norm = trans_norm(tensor_img) # 对tensor类型的图形进行Normalize(参数:tensor类型的图片)
# writer.add_image("img_norm", img_norm) # # tensorboard显示Normalize之后的图片
# print("norm_tensor_img[0]:", img_norm[0][0])
# Resize (2个参数)
print("img_PIL.size", img_PIL.size)
trans_resize = transforms.Resize((200, 400)) # 先初始化Resize对象,设定宽高
img_resize = trans_resize(img_PIL) # 将需要的resize的图片作为参数传入实例,得到resize后的PIL格式图像
print("img_resize.size", img_resize.size)
img_resize = trans_totensor(img_resize) # 利用前面已经初始化的totensor实例转为Tensor格式
writer.add_image("img_resize", img_resize, 0)
# Resize (1个参数)
trans_resize_2 = transforms.Resize(512)
trans_compose = transforms.Compose([trans_resize_2, trans_totensor])
img_resize_2 = trans_compose(img_PIL)
writer.add_image("img_resize_2", img_resize_2, 1)
writer.close()
常见Transform操作
最新推荐文章于 2024-08-08 20:43:35 发布