merge boxes by label

This commit is contained in:
Blake Blackshear 2020-01-06 20:36:04 -06:00
parent 08174d8db2
commit 49dc029c43

View File

@ -113,19 +113,23 @@ class RegionRefiner(threading.Thread):
detected_objects = self.camera.detected_objects[frame_time].copy()
# print(f"{frame_time} finished")
detected_object_groups = defaultdict(lambda: []))
# group by name
for obj in detected_objects:
detected_object_groups[obj['name']].append(obj)
look_again = False
selected_objects = []
for name, group in detected_object_groups.items():
# apply non-maxima suppression to suppress weak, overlapping bounding boxes
boxes = [(o['box']['xmin'], o['box']['ymin'], o['box']['xmax']-o['box']['xmin'], o['box']['ymax']-o['box']['ymin'])
for o in detected_objects]
confidences = [o['score'] for o in detected_objects]
idxs = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)
# print(f"{frame_time} - NMS reduced objects from {len(detected_objects)} to {len(idxs)}")
look_again = False
# get selected objects
selected_objects = []
for index in idxs:
obj = detected_objects[index[0]]
obj = group[index[0]]
selected_objects.append(obj)
if obj['clipped']:
box = obj['box']