33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
import cv2
|
|
|
|
|
|
def draw_boxes(image, bboxes):
|
|
img = image.copy()
|
|
for idx, bbox in enumerate(bboxes):
|
|
xmin, ymin, xmax, ymax = bbox
|
|
xmin, ymin, xmax, ymax = int(xmin), int(ymin), int(xmax), int(ymax)
|
|
# Draw bounding box and number on original image
|
|
img = cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
|
|
img = cv2.putText(img, str(idx), (xmin + 5, ymin + 25),
|
|
cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 0, 0), 4,
|
|
cv2.LINE_AA)
|
|
img = cv2.putText(img, str(idx), (xmin + 5, ymin + 25),
|
|
cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 255, 255), 2,
|
|
cv2.LINE_AA)
|
|
return img
|
|
|
|
|
|
def get_cutout(img, xmin, xmax, ymin, ymax):
|
|
"""Cut out a bounding box from an image and transform it for
|
|
object classification model.
|
|
|
|
:param img: opencv2 image object in BGR
|
|
:param int xmin: start of bounding box on x axis
|
|
:param int xmax: end of bounding box on x axis
|
|
:param int ymin: start of bounding box on y axis
|
|
:param int ymax: end of bounding box on y axis
|
|
:returns: tensor of cropped image in BGR
|
|
"""
|
|
cropped_image = img[ymin:ymax, xmin:xmax]
|
|
return cropped_image
|