Mercurial Hosting > traffic-intelligence
diff python/moving.py @ 726:43ae3a1af290
added functionality to display matchings between ground truth and tracked objects
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 07 Aug 2015 13:07:53 -0400 |
parents | e14e2101a5a9 |
children | c6d4ea05a2d0 |
line wrap: on
line diff
--- a/python/moving.py Fri Aug 07 01:05:01 2015 -0400 +++ b/python/moving.py Fri Aug 07 13:07:53 2015 -0400 @@ -1067,6 +1067,42 @@ print 'The object does not exist at '+str(inter) return None + def getObjectsInMask(self, mask, homography = None, minLength = 1): + '''Returns new objects made of the positions in the mask + mask is in the destination of the homography space''' + if homography is not None: + self.projectedPositions = self.positions.project(homography) + else: + self.projectedPositions = self.positions + def inMask(positions, i, mask): + p = positions[i] + return mask[p.y, p.x] != 0. + + #subTimeIntervals self.getFirstInstant()+i + filteredIndices = [inMask(self.projectedPositions, i, mask) for i in range(int(self.length()))] + # 'connected components' in subTimeIntervals + l = 0 + intervalLabels = [] + prev = True + for i in filteredIndices: + if i: + if not prev: # new interval + l += 1 + intervalLabels.append(l) + else: + intervalLabels.append(-1) + prev = i + intervalLabels = array(intervalLabels) + subObjects = [] + for l in set(intervalLabels): + if l >= 0: + if sum(intervalLabels == l) >= minLength: + times = [self.getFirstInstant()+i for i in range(len(intervalLabels)) if intervalLabels[i] == l] + subTimeInterval = TimeInterval(min(times), max(times)) + subObjects.append(self.getObjectInTimeInterval(subTimeInterval)) + + return subObjects + def getPositions(self): return self.positions