Mercurial > hg > nsaunier > traffic-intelligence
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 725:35bc5e30a53f | 726:43ae3a1af290 |
|---|---|
| 1064 obj.velocities = self.velocities.getTrajectoryInInterval(trajectoryInterval) | 1064 obj.velocities = self.velocities.getTrajectoryInInterval(trajectoryInterval) |
| 1065 return obj | 1065 return obj |
| 1066 else: | 1066 else: |
| 1067 print 'The object does not exist at '+str(inter) | 1067 print 'The object does not exist at '+str(inter) |
| 1068 return None | 1068 return None |
| 1069 | |
| 1070 def getObjectsInMask(self, mask, homography = None, minLength = 1): | |
| 1071 '''Returns new objects made of the positions in the mask | |
| 1072 mask is in the destination of the homography space''' | |
| 1073 if homography is not None: | |
| 1074 self.projectedPositions = self.positions.project(homography) | |
| 1075 else: | |
| 1076 self.projectedPositions = self.positions | |
| 1077 def inMask(positions, i, mask): | |
| 1078 p = positions[i] | |
| 1079 return mask[p.y, p.x] != 0. | |
| 1080 | |
| 1081 #subTimeIntervals self.getFirstInstant()+i | |
| 1082 filteredIndices = [inMask(self.projectedPositions, i, mask) for i in range(int(self.length()))] | |
| 1083 # 'connected components' in subTimeIntervals | |
| 1084 l = 0 | |
| 1085 intervalLabels = [] | |
| 1086 prev = True | |
| 1087 for i in filteredIndices: | |
| 1088 if i: | |
| 1089 if not prev: # new interval | |
| 1090 l += 1 | |
| 1091 intervalLabels.append(l) | |
| 1092 else: | |
| 1093 intervalLabels.append(-1) | |
| 1094 prev = i | |
| 1095 intervalLabels = array(intervalLabels) | |
| 1096 subObjects = [] | |
| 1097 for l in set(intervalLabels): | |
| 1098 if l >= 0: | |
| 1099 if sum(intervalLabels == l) >= minLength: | |
| 1100 times = [self.getFirstInstant()+i for i in range(len(intervalLabels)) if intervalLabels[i] == l] | |
| 1101 subTimeInterval = TimeInterval(min(times), max(times)) | |
| 1102 subObjects.append(self.getObjectInTimeInterval(subTimeInterval)) | |
| 1103 | |
| 1104 return subObjects | |
| 1069 | 1105 |
| 1070 def getPositions(self): | 1106 def getPositions(self): |
| 1071 return self.positions | 1107 return self.positions |
| 1072 | 1108 |
| 1073 def getVelocities(self): | 1109 def getVelocities(self): |
