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")
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 = img[100:300, 150:350]
roi_gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
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