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()
✅ 這樣可以讓影像適應不同的輸入大小。
如果想根據比例縮放,可以使用 fx
和 fy
參數:
✅ 影像裁切(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) (垂直翻轉) |
🚀 現在你已經學會如何對影像進行基本操作!接下來,我們將學習顏色與影像轉換! 😊