# Ultralytics YOLO 🚀, AGPL-3.0 license from collections import OrderedDict import numpy as np class TrackState: New = 0 Tracked = 1 Lost = 2 Removed = 3 class BaseTrack: _count = 0 track_id = 0 is_activated = False state = TrackState.New history = OrderedDict() features = [] curr_feature = None score = 0 start_frame = 0 frame_id = 0 time_since_update = 0 # Multi-camera location = (np.inf, np.inf) @property def end_frame(self): return self.frame_id @staticmethod def next_id(): BaseTrack._count += 1 return BaseTrack._count def activate(self, *args): raise NotImplementedError def predict(self): raise NotImplementedError def update(self, *args, **kwargs): raise NotImplementedError def mark_lost(self): self.state = TrackState.Lost def mark_removed(self): self.state = TrackState.Removed @staticmethod def reset_id(): BaseTrack._count = 0