一、函數介紹
transforms.topilimage()是pytorch中一個非常實用的函數,可以將Tensor類型的圖像轉換成PIL.Image類型的圖像,使得我們可以在python中更方便地處理圖像。
該函數需要注意的是,輸入的Tensor需要滿足以下條件:1.維度為3或4;2.數據類型為torch.uint8或者torch.float32;3.數值範圍在[0, 1]或[0, 255]之間。
下面我們將從幾個方面來詳細介紹這個函數。
二、函數參數
transforms.topilimage()函數只有一個參數,即輸入的Tensor類型的圖像數據,這個參數是必須的。
import torch from torchvision import transforms # 構造一個3通道的圖片,大小為3x3 image = torch.rand(3, 3, 3) # 使用transforms.topilimage()函數將Tensor類型的圖像轉換成PIL.Image類型的圖像 pil_image = transforms.ToPILImage()(image)
三、函數用途
transforms.topilimage()函數用途非常廣泛,可以在很多場景下使用。
1、可視化圖像
在使用pytorch進行圖像分類任務的時候,我們通常使用matplotlib等庫來進行可視化,而transforms.topilimage函數可以很方便地將Tensor類型的圖像轉換成PIL.Image類型,方便我們進行可視化。
import torch from torchvision import transforms from PIL import Image # 構造一個3通道的圖片,大小為3x3 image = torch.rand(3, 3, 3) # 使用transforms.topilimage()函數將Tensor類型的圖像轉換成PIL.Image類型的圖像 pil_image = transforms.ToPILImage()(image) # 可以使用matplotlib來進行可視化 import matplotlib.pyplot as plt plt.imshow(pil_image) plt.show()
2、保存圖像
當我們需要將pytorch中的Tensor類型的圖像保存成圖片的時候,transforms.topilimage函數可以很方便地完成這個任務。
import torch import torchvision.transforms as transforms from PIL import Image # 構造一個3通道的圖片,大小為3x3 image = torch.rand(3, 3, 3) # 使用transforms.topilimage()函數將Tensor類型的圖像轉換成PIL.Image類型的圖像 pil_image = transforms.ToPILImage()(image) # 將PIL.Image類型的圖像保存成文件 pil_image.save('test.png')
四、函數返回值
transforms.topilimage()函數的返回值是一個PIL.Image類型的圖像。
import torch from torchvision import transforms from PIL import Image # 構造一個3通道的圖片,大小為3x3 image = torch.rand(3, 3, 3) # 使用transforms.topilimage()函數將Tensor類型的圖像轉換成PIL.Image類型的圖像 pil_image = transforms.ToPILImage()(image) # 打印返回值的類型 print(type(pil_image)) #
五、函數示例
下面的例子展示了如何讀取一張圖像,對其進行隨機裁剪、水平翻轉和歸一化操作,最終將處理後的Tensor類型的圖像轉換成PIL.Image類型,並將其保存成文件。
from PIL import Image import torch from torchvision import transforms # 讀取一張圖像 image = Image.open('test.jpg') # 構造一個transforms對象,包含隨機裁剪、水平翻轉和歸一化操作 transform = transforms.Compose([ transforms.RandomCrop(224), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 對圖像進行變換 tensor_image = transform(image) # 將Tensor類型的圖像轉換成PIL.Image類型的圖像 pil_image = transforms.ToPILImage()(tensor_image) # 保存PIL.Image類型的圖像 pil_image.save('result.png')
原創文章,作者:JZUHA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/324775.html