Ejemplo n.º 1
0
class Trackable:
    def __init__(self, bbox):
        self._averager = Averager(AVG_SERIES, len(bbox))
        self._seen = 0
        self._unseen = 0
        self.push(bbox)

    def match(self, bbox):
        return distance(centroid(bbox), centroid(
            self._averager.latest())) < DIST_THRESHOLD

    def bbox(self):
        return self._averager.mean()

    def push(self, bbox):
        self._averager.push(bbox)
        self._seen += 1
        self._unseen = max(0, self._unseen - 1)

    def unseen(self):
        self._unseen += 1
        if self.delete():
            self._seen = 0

    def good(self):
        return self._seen > SEEN_THRESHOLD

    def delete(self):
        return self._unseen > LOST_THRESHOLD