2019-02-26 03:27:02 +01:00
|
|
|
import numpy as np
|
2019-06-02 14:29:50 +02:00
|
|
|
import cv2
|
2019-02-26 03:27:02 +01:00
|
|
|
|
|
|
|
# convert shared memory array into numpy array
|
|
|
|
def tonumpyarray(mp_arr):
|
2019-06-02 14:29:50 +02:00
|
|
|
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
|
|
|
|
# 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 - 2), font, fontScale=font_scale, color=(0, 0, 0), thickness=2)
|