天天看點

crop and resize image

目标

利用Python版的OpenCV,根據2D bounding box , crop圖像。

以下假設2D bouding box 的格式為:[xmin , ymin , w,  h],以[30 30 72 42]為例。

代碼
import cv2
bb2d = [30, 30, 72 ,42]
image = cv2.imread('car.png')
pt1 = (int(bb2d[0]), int(bb2d[1]))
pt2 = (int(bb2d[0]) + int(bb2d[2]), int(bb2d[1]) + int(bb2d[3]))
cv2.rectangle(image, pt1, pt2, (0,0,255))
cv2.imshow('original',image)
image = cv2.imread('car.png')
image_cropped = image[int(bb2d[1]):int(bb2d[1]) + int(bb2d[3]),
                      int(bb2d[0]):int(bb2d[0]) + int(bb2d[2])]
cv2.imshow('cropped',image_cropped)
image_resized = cv2.resize(image_cropped,(224,224))
cv2.imshow('resized',image_resized)
cv2.waitKey(0)
           
運作結果
crop and resize image
參考:

https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_image_display/py_image_display.html

https://docs.opencv.org/3.0-beta/modules/imgproc/doc/geometric_transformations.html?highlight=resize#cv2.resize