はじめに
OpenCVを利用して、マウスクリックイベントを練習してみました。
やりたいこと
マウスでBounding Boxを描き、その領域を切り取りたいと思います。
やり方の説明
OpenCVのcv2.selectROI()を使います。
Raw Image(img_raw)に対し、下記の命令を実行すると、Bounding Boxの座標がROI変数に格納されます。
ROI = cv2.selectROI('Select ROIs', img_raw, fromCenter = False, showCrosshair = False)
print('ROI',ROI)
結果
ROI (115, 99, 275, 336)
ROIに格納された座標を利用して、Raw ImageからCropします。
x1 = ROI[0]
y1 = ROI[1]
x2 = ROI[2]
y2 = ROI[3]
# Crop Image
img_crop = img_raw[int(y1):int(y1+y2),int(x1):int(x1+x2)]
実行結果
コード
import cv2
import numpy as np
img_raw = cv2.imread('./images/lena.png')
# select ROIs function
ROI = cv2.selectROI('Select ROIs', img_raw, fromCenter = False, showCrosshair = False)
x1 = ROI[0]
y1 = ROI[1]
x2 = ROI[2]
y2 = ROI[3]
print('ROI', ROI)
# Crop Image
img_crop = img_raw[int(y1):int(y1+y2),int(x1):int(x1+x2)]
cv2.imshow("crop", img_crop)
cv2.waitKey(0)