現在的圖片都蠻大張的,若整張丟下去做AVI檢測,相對的時間會要比較久一點,事先擷取出感興趣的區域來檢測,就會縮短整個測試的時間。
本文主要提供一個擷取ROI的函式。
從圖片中裁剪出指定的感興趣區域(ROI)。
def crop_img(img, x, y, h, w):
"""
從圖片中裁剪出 ROI(感興趣區域)。
參數:
img (numpy.ndarray): 要裁剪的圖片。
x (int): 感興趣區域的左上角 x 坐標。
y (int): 感興趣區域的左上角 y 坐標。
h (int): 感興趣區域的高度。
w (int): 感興趣區域的寬度。
返回:
numpy.ndarray: 裁剪後的圖片。
"""
return img[y:y+h, x:x+w]
假設有一張圖片 img
,並且希望從 (50, 100) 開始,裁剪出一個寬 200 高 150 的區域,可以這樣使用:
codecropped_img = crop_img(img, 50, 100, 150, 200)
這段程式碼將返回從 (50, 100) 到 (250, 250) 的區域。
import cv2
def crop_img(img, x, y, h, w):
"""
從圖片中裁剪出 ROI(感興趣區域)。
參數:
img (numpy.ndarray): 要裁剪的圖片。
x (int): 感興趣區域的左上角 x 坐標。
y (int): 感興趣區域的左上角 y 坐標。
h (int): 感興趣區域的高度。
w (int): 感興趣區域的寬度。
返回:
numpy.ndarray: 裁剪後的圖片。
"""
return img[y:y+h, x:x+w]
path = '圖片路徑'
img = cv2.imread(path)
out = crop_img(img,105,226,133,182) #輸入圖片座標 高寬
cv2.imshow('out',out)
cv2.waitKey(0)
假設今天我對狗的圖像比較感興趣時,想要擷取牠的頭像,可以開啟小畫家來查看座標及高寬設定。X,Y座標(105,226) 高133寬182