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) 範圍內的角度旋轉。

更新於:2022年1月6日

6000+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告