PyTorch – 如何旋轉影像?
**RandomRotation()** 函式可以將影像隨機旋轉一個角度。選擇的隨機角度來自給定的角度範圍(度)。**RandomRotation()** 是 **torchvision.transforms** 模組提供的許多重要變換之一。**RandomRotation()** 變換接受 PIL 影像和張量影像。
張量影像是一個形狀為 [C, H, W] 的 Torch 張量,其中 C 是通道數,H 是影像高度,W 是影像寬度。如果影像既不是 PIL 影像也不是張量影像,則我們首先將其轉換為張量影像,然後應用變換。
語法
torchvision.transforms.RandomRotation(degree)(img)
其中 **degree** 是所需的度數範圍。它是一個序列,例如 (min, max)。影像將以從該範圍內隨機選擇的角度旋轉。
步驟
我們可以使用以下步驟以隨機角度旋轉影像:
匯入所需的庫。在以下所有示例中,所需的 Python 庫是 **torch、Pillow** 和 **torchvision**。確保您已經安裝了它們。
import torch import torchvision import torchvision.transforms as T from PIL import Image
讀取輸入影像。輸入影像可以是 PIL 影像或 Torch 張量。
img = Image.open('desert.jpg')
定義一個變換來以隨機角度旋轉影像。給出所需的度數範圍。
transform = T.RandomRotation((30,70))
將上述定義的變換應用於輸入影像,以隨機角度旋轉輸入影像。
rotated_img = transform(img)
顯示輸出影像。
rotated_img.show()
輸入影像
此影像用作以下所有示例中的輸入檔案。
示例 1
在此示例中,我們將角度範圍設定為 (30,60)。輸入影像旋轉的角度將從此範圍內隨機選擇。
# import required libraries import torch import torchvision.transforms as T from PIL import Image # read the input image img = Image.open('desert.jpg') # define a transform to rotate he input image transform = T.RandomRotation(degrees=(30,60)) # rotate the input image using above defined trasnform img = transform(img) # dispaly the rotated image img.show()
輸出
它將產生以下輸出:
請注意,輸入影像旋轉的角度來自範圍 (30,60)。
示例 2
在此示例中,我們將演示如何以不同的角度旋轉輸入影像。
import torch import torchvision.transforms as T from PIL import Image import matplotlib.pyplot as plt # read the input image img = Image.open('desert.jpg') # define a transform to rotate the image transform = T.RandomRotation(degrees = (0,180)) # save four output images applying the above transform imgs = [transform(img) for _ in range(4)] fig = plt.figure(figsize=(7,4)) rows, cols = 2,2 for j in range(0, len(imgs)): fig.add_subplot(rows, cols, j+1) plt.imshow(imgs[j]) plt.xticks([]) plt.yticks([]) plt.show()
輸出
它將產生以下輸出:
請注意,所有四個輸出影像都以不同的角度旋轉。角度範圍設定為 (0,180)。每個影像都以 (0,180) 範圍內的角度旋轉。
廣告