Like Share Discussion Bookmark Smile

J.J. Huang   2026-01-17   Python OpenCV 03.圖片處理篇:基礎技巧   瀏覽次數:次   DMCA.com Protection Status

Python | OpenCV 區域裁切與 ROI 應用

📚 前言

在前面我們學會了 圖片縮放、旋轉與翻轉
這一篇要進一步學習 區域裁切與 ROI (Region of Interest) 應用,這是影像處理中非常常見的技巧,能讓我們針對影像中的特定區域進行操作,例如物件偵測、特徵分析或資料前處理。

🔍 基本概念

  • 區域裁切 (Cropping):從影像中擷取一部分區域。
  • ROI (Region of Interest):定義影像中有意義的區域,並針對該區域進行操作。

💻 範例程式:區域裁切

1
2
3
4
5
6
7
8
9
10
11
import cv2

img = cv2.imread("test.png")

# 定義裁切範圍 (y1:y2, x1:x2)
crop = img[50:200, 100:300]

cv2.imshow("Original", img)
cv2.imshow("Crop", crop)
cv2.waitKey(0)
cv2.destroyAllWindows()


圖:區域裁切示例

💻 範例程式:將裁剪的圖片貼到空白背景中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import cv2
import numpy as np

# 讀取原始圖片
img = cv2.imread("test.png")

# 從原圖裁切一塊區域
crop = img[50:200, 100:300]

# 建立一張空白背景 (黑色)
background = np.zeros((400, 400, 3), dtype=np.uint8)

# 將裁切的區域貼到背景指定位置
background[50:200, 50:250] = crop

cv2.imshow("Crop", crop)
cv2.imshow("Result", background)
cv2.waitKey(0)
cv2.destroyAllWindows()


圖:將裁剪的圖片貼到空白背景中

💻 範例程式:ROI 應用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2

img = cv2.imread("test.png")

# 定義 ROI 區域
roi = img[100:300, 150:350]

# 在 ROI 區域上做灰階化
roi_gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)

# 將灰階 ROI 放回原圖
img[100:300, 150:350] = cv2.cvtColor(roi_gray, cv2.COLOR_GRAY2BGR)

cv2.imshow("Original", img)
cv2.imshow("ROI Gray", roi_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()


圖:ROI 應用示例

⚠️ 注意事項

  • 座標系統:OpenCV 使用 [y, x] 的順序,第一維是高度 (rows),第二維是寬度 (cols)。
  • 裁切範圍:超出邊界會造成錯誤或空影像。
  • ROI 應用:ROI 是原圖的參考區域,修改 ROI 會直接影響原圖。
  • 裁切再利用:裁切的區域可以貼到其他圖片或空白背景中,靈活應用。
  • 常見用途:物件偵測、特徵分析、資料增強。

🎯 結語

這一篇我們學會了如何進行 區域裁切與 ROI 應用,並且示範了如何將裁切的圖片貼到空白背景中,掌握影像區域操作的基礎技巧。這在物件偵測、特徵分析與資料前處理中非常重要。

在下一篇,我們將進一步學習 調整亮度、對比與負片效果,掌握影像像素層級的處理方法,改善可視性並支援資料增強。

📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。


註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials