今天來學習如何翻轉與旋轉圖片,這在資料增強(Data Augmentation)時非常重要。
透過翻轉與旋轉,可以讓模型見到更多不同視角的影像,有助提升模型泛化能力。
和前幾天一樣,準備一張彩色圖片(image.jpg)放在同一資料夾:
import cv2
img = cv2.imread('image.jpg')
為了讓圖片停留讓我們可以觀察,記得最後要加上這段。
cv2.waitKey()
cv2.destroyAllWindows()
使用 cv2.flip()
可以將圖片做水平或垂直翻轉:
flip_horizontal = cv2.flip(img, 1) # 水平翻轉(左右反轉)
flip_vertical = cv2.flip(img, 0) # 垂直翻轉(上下顛倒)
flip_both = cv2.flip(img, -1) # 同時水平和垂直翻轉(旋轉180度效果)
cv2.imshow("My Image", img)
cv2.imshow('Flip Horizontal', flip_horizontal)
cv2.imshow('Flip Vertical', flip_vertical)
cv2.imshow('Flip Both', flip_both)
1
:水平翻轉0
:垂直翻轉-1
:水平+垂直同時翻轉翻轉圖片在資料增強和鏡像檢測等應用中非常實用。
翻轉後的範例如下圖:
旋轉圖片需要先計算旋轉矩陣,再利用 cv2.warpAffine
做仿射變換:
h, w = img.shape[:2] # 取得圖片高度與寬度
M = cv2.getRotationMatrix2D((w//2, h//2), 45, 1) # 以圖片中心為軸,旋轉45度,縮放比例1
rotated = cv2.warpAffine(img, M, (w, h)) # 進行旋轉
cv2.imshow("My Image", img)
cv2.imshow("Rotated", rotated)
getRotationMatrix2D(center, angle, scale)
:
center
:旋轉中心點(此例為圖片中心)angle
:旋轉角度(正值為逆時針方向)scale
:縮放比例(1表示不縮放)warpAffine()
:
旋轉圖片常用於資料增強、圖像對齊和修正等任務。
旋轉後的範例如下圖:
cv2.flip()
是簡單有效的圖片翻轉方法,有水平、垂直和同時翻轉三種模式。cv2.warpAffine()
可以對圖片進行任意角度旋轉。掌握圖片的翻轉與旋轉,讓你在影像前處理和資料增強方面更加靈活!