1234567891011121314151617181920212223242526 |
- import numpy as np
- import cv2
- # convert shared memory array into numpy array
- def tonumpyarray(mp_arr):
- return np.frombuffer(mp_arr.get_obj(), dtype=np.uint8)
- def draw_box_with_label(frame, x_min, y_min, x_max, y_max, label):
- color = (255,0,0)
- cv2.rectangle(frame, (x_min, y_min),
- (x_max, y_max),
- color, 2)
- font_scale = 0.5
- font = cv2.FONT_HERSHEY_SIMPLEX
- # get the width and height of the text box
- size = cv2.getTextSize(label, font, fontScale=font_scale, thickness=2)
- text_width = size[0][0]
- text_height = size[0][1]
- line_height = text_height + size[1]
- # set the text start position
- text_offset_x = x_min
- text_offset_y = 0 if y_min < line_height else y_min - (line_height+8)
- # make the coords of the box with a small padding of two pixels
- textbox_coords = ((text_offset_x, text_offset_y), (text_offset_x + text_width + 2, text_offset_y + line_height))
- cv2.rectangle(frame, textbox_coords[0], textbox_coords[1], color, cv2.FILLED)
- cv2.putText(frame, label, (text_offset_x, text_offset_y + line_height - 3), font, fontScale=font_scale, color=(0, 0, 0), thickness=2)
|