Skip to content

3️⃣ 影像基本操作

🎯 為什麼需要影像基本操作?

在電腦視覺應用中,我們經常需要對影像進行 調整大小、裁切、旋轉、翻轉 等處理,以便後續的影像分析或模型訓練。

適用場景

  • 縮放影像 以適應不同的輸入尺寸
  • 裁切影像 以獲取關鍵區域
  • 旋轉影像 以進行增強或對齊
  • 翻轉影像 以進行數據增強(Data Augmentation)

✅ 調整影像大小(Resize)

我們可以使用 cv2.resize() 來調整影像尺寸。

import cv2

# 讀取影像
image = cv2.imread("image.jpg")

# 調整影像大小(設定寬度、高度)
resized = cv2.resize(image, (300, 300))

# 顯示影像
cv2.imshow("Resized Image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()

這樣可以讓影像適應不同的輸入大小。

如果想根據比例縮放,可以使用 fxfy 參數:

resized = cv2.resize(image, None, fx=0.5, fy=0.5)

✅ 影像裁切(Crop)

使用 NumPy 陣列切片(Slicing)來裁切影像。

# 裁切影像(y1:y2, x1:x2)
cropped = image[50:200, 100:300]

# 顯示裁切影像
cv2.imshow("Cropped Image", cropped)
cv2.waitKey(0)
cv2.destroyAllWindows()

這樣可以獲取影像中某個區域,例如臉部或物件部分。


✅ 影像旋轉(Rotate)

使用 cv2.getRotationMatrix2D() 來旋轉影像。

(h, w) = image.shape[:2]  # 獲取影像尺寸
center = (w // 2, h // 2)  # 設定旋轉中心

# 旋轉 45 度(可調整角度)
M = cv2.getRotationMatrix2D(center, 45, 1.0)
rotated = cv2.warpAffine(image, M, (w, h))

cv2.imshow("Rotated Image", rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()

這樣可以將影像旋轉特定角度,例如 90 度、180 度等。


✅ 影像翻轉(Flip)

OpenCV 提供 cv2.flip() 來翻轉影像。

# 水平翻轉(左右翻轉)
flipped = cv2.flip(image, 1)

# 垂直翻轉(上下翻轉)
flipped_vertical = cv2.flip(image, 0)

cv2.imshow("Flipped Image", flipped)
cv2.imshow("Flipped Vertical", flipped_vertical)
cv2.waitKey(0)
cv2.destroyAllWindows()

這常用於數據增強(Data Augmentation),特別是在機器學習中。


📝 總結

功能 語法
調整影像大小 cv2.resize(image, (width, height))
裁切影像 cropped = image[y1:y2, x1:x2]
旋轉影像 cv2.warpAffine(image, M, (w, h))
影像翻轉 cv2.flip(image, 1)(水平翻轉) / cv2.flip(image, 0)(垂直翻轉)

🚀 現在你已經學會如何對影像進行基本操作!接下來,我們將學習顏色與影像轉換! 😊