mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-26 19:06:11 +01:00
add a label position arg for bounding boxes
This commit is contained in:
parent
1b74d7a19f
commit
205b8b413f
@ -75,7 +75,7 @@ def compute_intersection_over_union(box_a, box_b):
|
|||||||
def tonumpyarray(mp_arr):
|
def tonumpyarray(mp_arr):
|
||||||
return np.frombuffer(mp_arr.get_obj(), dtype=np.uint8)
|
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, info, thickness=2, color=None):
|
def draw_box_with_label(frame, x_min, y_min, x_max, y_max, label, info, thickness=2, color=None, position='ul'):
|
||||||
if color is None:
|
if color is None:
|
||||||
color = COLOR_MAP[label]
|
color = COLOR_MAP[label]
|
||||||
display_text = "{}: {}".format(label, info)
|
display_text = "{}: {}".format(label, info)
|
||||||
@ -90,8 +90,18 @@ def draw_box_with_label(frame, x_min, y_min, x_max, y_max, label, info, thicknes
|
|||||||
text_height = size[0][1]
|
text_height = size[0][1]
|
||||||
line_height = text_height + size[1]
|
line_height = text_height + size[1]
|
||||||
# set the text start position
|
# set the text start position
|
||||||
|
if position == 'ul':
|
||||||
text_offset_x = x_min
|
text_offset_x = x_min
|
||||||
text_offset_y = 0 if y_min < line_height else y_min - (line_height+8)
|
text_offset_y = 0 if y_min < line_height else y_min - (line_height+8)
|
||||||
|
elif position == 'ur':
|
||||||
|
text_offset_x = x_max - (text_width+8)
|
||||||
|
text_offset_y = 0 if y_min < line_height else y_min - (line_height+8)
|
||||||
|
elif position == 'bl':
|
||||||
|
text_offset_x = x_min
|
||||||
|
text_offset_y = y_max
|
||||||
|
elif position == 'br':
|
||||||
|
text_offset_x = x_max - (text_width+8)
|
||||||
|
text_offset_y = y_max
|
||||||
# make the coords of the box with a small padding of two pixels
|
# 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))
|
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.rectangle(frame, textbox_coords[0], textbox_coords[1], color, cv2.FILLED)
|
||||||
|
@ -333,7 +333,7 @@ class Camera:
|
|||||||
|
|
||||||
for id, obj in tracked_objects.items():
|
for id, obj in tracked_objects.items():
|
||||||
color = (0, 255,0) if obj['frame_time'] == frame_time else (255, 0, 0)
|
color = (0, 255,0) if obj['frame_time'] == frame_time else (255, 0, 0)
|
||||||
draw_box_with_label(frame, obj['box']['xmin'], obj['box']['ymin'], obj['box']['xmax'], obj['box']['ymax'], obj['name'], f"{int(obj['score']*100)}% {obj['area']} {id}", color=color, thickness=1)
|
draw_box_with_label(frame, obj['box']['xmin'], obj['box']['ymin'], obj['box']['xmax'], obj['box']['ymax'], obj['name'], f"{id}", color=color, thickness=1, position='bl')
|
||||||
|
|
||||||
# print a timestamp
|
# print a timestamp
|
||||||
time_to_show = datetime.datetime.fromtimestamp(frame_time).strftime("%m/%d/%Y %H:%M:%S")
|
time_to_show = datetime.datetime.fromtimestamp(frame_time).strftime("%m/%d/%Y %H:%M:%S")
|
||||||
|
Loading…
Reference in New Issue
Block a user