From c653567cc13027c815d5177953b893310bac925e Mon Sep 17 00:00:00 2001 From: Kyle Niewiada Date: Wed, 3 Jul 2019 07:14:39 -0400 Subject: [PATCH] Add `area` labels to bounding boxes (#47) * Add object size to the bounding box Remove script from Dockerfile Fix framerate command Move default value for framerate update dockerfile dockerfile changes Add person_area label to surrounding box Update dockerfile ffmpeg config bug Add `person_area` label to `best_person` frame Resolve debug view showing area label for non-persons Add object size to the bounding box Add object size to the bounding box * Move object area outside of conditional to work with all object types --- frigate/objects.py | 2 +- frigate/video.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/frigate/objects.py b/frigate/objects.py index 39ff8f901..5109713b6 100644 --- a/frigate/objects.py +++ b/frigate/objects.py @@ -81,7 +81,7 @@ class BestPersonFrame(threading.Thread): if not self.best_person is None and self.best_person['frame_time'] in recent_frames: best_frame = recent_frames[self.best_person['frame_time']] - label = "{}: {}%".format(self.best_person['name'],int(self.best_person['score']*100)) + label = "{}: {}% {}".format(self.best_person['name'],int(self.best_person['score']*100),int(self.best_person['area'])) draw_box_with_label(best_frame, self.best_person['xmin'], self.best_person['ymin'], self.best_person['xmax'], self.best_person['ymax'], label) diff --git a/frigate/video.py b/frigate/video.py index 86a9fd2d5..c8a4d65eb 100644 --- a/frigate/video.py +++ b/frigate/video.py @@ -234,8 +234,10 @@ class Camera: return for obj in objects: + # Store object area to use in bounding box labels + obj['area'] = (obj['xmax']-obj['xmin'])*(obj['ymax']-obj['ymin']) + if obj['name'] == 'person': - person_area = (obj['xmax']-obj['xmin'])*(obj['ymax']-obj['ymin']) # find the matching region region = None for r in self.regions: @@ -250,7 +252,7 @@ class Camera: # if the min person area is larger than the # detected person, don't add it to detected objects - if region and region['min_person_area'] > person_area: + if region and region['min_person_area'] > obj['area']: continue # compute the coordinates of the person and make sure @@ -279,7 +281,7 @@ class Camera: # draw the bounding boxes on the screen for obj in detected_objects: - label = "{}: {}%".format(obj['name'],int(obj['score']*100)) + label = "{}: {}% {}".format(obj['name'],int(obj['score']*100),int(obj['area'])) draw_box_with_label(frame, obj['xmin'], obj['ymin'], obj['xmax'], obj['ymax'], label) for region in self.regions: