Mercurial Hosting > traffic-intelligence
comparison python/moving.py @ 936:56cc8a1f7082
removed all old versions of projection methods
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 14 Jul 2017 16:48:42 -0400 |
parents | 0e63a918a1ca |
children | b67a784beb69 |
comparison
equal
deleted
inserted
replaced
935:0e63a918a1ca | 936:56cc8a1f7082 |
---|---|
261 | 261 |
262 if shapelyAvailable: | 262 if shapelyAvailable: |
263 def asShapely(self): | 263 def asShapely(self): |
264 return shapelyPoint(self.x, self.y) | 264 return shapelyPoint(self.x, self.y) |
265 | 265 |
266 def project(self, homography): | 266 def homographyProject(self, homography): |
267 projected = cvutils.projectArray(homography, array([[self.x], [self.y]])) | 267 projected = cvutils.homographyProject(array([[self.x], [self.y]]), homography) |
268 return Point(projected[0], projected[1]) | 268 return Point(projected[0], projected[1]) |
269 | 269 |
270 def inPolygon(self, polygon): | 270 def inPolygon(self, polygon): |
271 '''Indicates if the point x, y is inside the polygon | 271 '''Indicates if the point x, y is inside the polygon |
272 (array of Nx2 coordinates of the polygon vertices) | 272 (array of Nx2 coordinates of the polygon vertices) |
1171 | 1171 |
1172 def getObjectsInMask(self, mask, homography = None, minLength = 1): | 1172 def getObjectsInMask(self, mask, homography = None, minLength = 1): |
1173 '''Returns new objects made of the positions in the mask | 1173 '''Returns new objects made of the positions in the mask |
1174 mask is in the destination of the homography space''' | 1174 mask is in the destination of the homography space''' |
1175 if homography is not None: | 1175 if homography is not None: |
1176 self.projectedPositions = self.positions.project(homography) | 1176 self.projectedPositions = self.positions.homographyProject(homography) |
1177 else: | 1177 else: |
1178 self.projectedPositions = self.positions | 1178 self.projectedPositions = self.positions |
1179 def inMask(positions, i, mask): | 1179 def inMask(positions, i, mask): |
1180 p = positions[i] | 1180 p = positions[i] |
1181 return mask[p.y, p.x] != 0. | 1181 return mask[p.y, p.x] != 0. |
1642 TODO: areas could be a wrapper object with a contains method that would work for polygons and images (with wrapper class) | 1642 TODO: areas could be a wrapper object with a contains method that would work for polygons and images (with wrapper class) |
1643 skip frames at beginning/end?''' | 1643 skip frames at beginning/end?''' |
1644 print('not implemented/tested yet') | 1644 print('not implemented/tested yet') |
1645 if not hasattr(self, projectedPositions): | 1645 if not hasattr(self, projectedPositions): |
1646 if homography is not None: | 1646 if homography is not None: |
1647 self.projectedPositions = obj.positions.project(homography) | 1647 self.projectedPositions = obj.positions.homographyProject(homography) |
1648 else: | 1648 else: |
1649 self.projectedPositions = obj.positions | 1649 self.projectedPositions = obj.positions |
1650 possibleUserTypes = {userType: 0 for userType in range(len(userTypenames))} | 1650 possibleUserTypes = {userType: 0 for userType in range(len(userTypenames))} |
1651 for p in self.projectedPositions: | 1651 for p in self.projectedPositions: |
1652 for userTypename in areas: | 1652 for userTypename in areas: |
1714 self.bottomRightPositions = bottomRightPositions.getPositions() | 1714 self.bottomRightPositions = bottomRightPositions.getPositions() |
1715 | 1715 |
1716 def computeCentroidTrajectory(self, homography = None): | 1716 def computeCentroidTrajectory(self, homography = None): |
1717 self.positions = self.topLeftPositions.add(self.bottomRightPositions).multiply(0.5) | 1717 self.positions = self.topLeftPositions.add(self.bottomRightPositions).multiply(0.5) |
1718 if homography is not None: | 1718 if homography is not None: |
1719 self.positions = self.positions.project(homography) | 1719 self.positions = self.positions.homographyProject(homography) |
1720 | 1720 |
1721 def matches(self, obj, instant, matchingDistance): | 1721 def matches(self, obj, instant, matchingDistance): |
1722 '''Indicates if the annotation matches obj (MovingObject) | 1722 '''Indicates if the annotation matches obj (MovingObject) |
1723 with threshold matchingDistance | 1723 with threshold matchingDistance |
1724 Returns distance if below matchingDistance, matchingDistance+1 otherwise | 1724 Returns distance if below matchingDistance, matchingDistance+1 otherwise |