Mercurial Hosting > traffic-intelligence
diff python/moving.py @ 203:e2f31813ade6
added code to display trajectories on videa
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 06 Mar 2012 18:10:19 -0500 |
parents | c06379f25ab8 |
children | ada6e8fbe4c6 |
line wrap: on
line diff
--- a/python/moving.py Mon Mar 05 02:55:19 2012 -0500 +++ b/python/moving.py Tue Mar 06 18:10:19 2012 -0500 @@ -153,6 +153,9 @@ def aslist(self): return [self.x, self.y] + def astuple(self): + return (self.x, self.y) + def project(self, homography): from numpy.core.multiarray import array projected = cvutils.projectArray(homography, array([[self.x], [self.y]])) @@ -257,7 +260,7 @@ the class is iterable.''' def __init__(self, positions=None): - if positions: + if positions != None: self.positions = positions else: self.positions = [[],[]] @@ -287,6 +290,9 @@ self.iterInstantNum += 1 return self[self.iterInstantNum-1] + def length(self): + return len(self.positions[0]) + def addPositionXY(self, x, y): self.positions[0].append(x) self.positions[1].append(y) @@ -295,24 +301,32 @@ self.addPositionXY(p.x, p.y) @staticmethod - def _draw(positions, options = '', withOrigin = False): + def _draw(positions, options = '', withOrigin = False, lastCoordinate = None): from matplotlib.pylab import plot - plot(positions[0], positions[1], options) + if lastCoordinate == None: + plot(positions[0], positions[1], options) + elif 0 <= lastCoordinate <= len(positions[0]): + plot(positions[0][:lastCoordinate], positions[1][:lastCoordinate], options) if withOrigin: plot([positions[0][0]], [positions[1][0]], 'ro') + def project(self, homography): + from numpy.core.multiarray import array + projected = cvutils.projectArray(homography, array(self.positions)) + return Trajectory(projected) + def draw(self, options = '', withOrigin = False): Trajectory._draw(self.positions, options, withOrigin) - def drawOnImage(self, nPixelsPerUnitDistance, imageHeight, options = '', withOrigin = False): + def drawAt(self, lastCoordinate, options = '', withOrigin = False): + Trajectory._draw(self.positions, options, withOrigin, lastCoordinate) + + def drawOnWorldImage(self, nPixelsPerUnitDistance, imageHeight, options = '', withOrigin = False): from matplotlib.pylab import plot imgPositions = [[x*nPixelsPerUnitDistance for x in self.positions[0]], [-x*nPixelsPerUnitDistance+imageHeight for x in self.positions[1]]] Trajectory._draw(imgPositions, options, withOrigin) - def length(self): - return len(self.positions[0]) - def getXCoordinates(self): return self.positions[0] @@ -478,8 +492,8 @@ def draw(self, options = '', withOrigin = False): self.positions.draw(options, withOrigin) - def drawOnImage(self, nPixelsPerUnitDistance, imageHeight, options = '', withOrigin = False): - self.positions.drawOnImage(nPixelsPerUnitDistance, imageHeight, options, withOrigin) + def drawWorldOnImage(self, nPixelsPerUnitDistance, imageHeight, options = '', withOrigin = False): + self.positions.drawWorldOnImage(nPixelsPerUnitDistance, imageHeight, options, withOrigin) def getInstantsCrossingLane(self, p1, p2): '''Returns the instant(s)