本篇介紹如何使用 Python 的 OpenCV 模組裁切圖片,取出部份的區域另存成新圖檔。

OpenCV 是一個普遍被使用影像處理函式庫,以下介紹如何裁切 OpenCV 的圖片,擷取圖片中部份的區域,顯示在螢幕上或是儲存為圖檔。

OpenCV 裁切圖片

我們拿這張萊娜圖作為範例,示範如何裁切 OpenCV 的圖片。

萊娜圖

首先按照普通的方式,將圖片用 OpenCV 的 imread 函數讀取進來:

import cv2

# 讀取圖檔
img = cv2.imread("lena.jpg")

這裡用 OpenCV 讀取進來的圖片 img 其實就是 NumPy 的陣列,如果想要對圖片進行裁切,就用索引的方式,將指定的區域取出即可:

# 裁切區域的 x 與 y 座標(左上角)
x = 100
y = 100

# 裁切區域的長度與寬度
w = 250
h = 150

# 裁切圖片
crop_img = img[y:y+h, x:x+w]

接著使用 OpenCV 的 imshow 顯示裁切的結果:

# 顯示圖片
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)

執行的結果如下:

圖片裁切結果

儲存 OpenCV 圖片

若要將裁切的圖片儲存下來,可使用 imwrite 函數:

# 寫入圖檔
cv2.imwrite('crop.jpg', crop_img)

這樣就可以將 crop_img 這個裁切好的圖片儲存至 crop.jpg 檔案中了。

關於 OpenCV 基本的圖檔讀取與儲存,可以參考 Python 與 OpenCV 基本讀取、顯示與儲存圖片教學

參考資料:StackOverflow