# HG changeset patch # User Nicolas Saunier # Date 1473795051 14400 # Node ID 07fb949ff98f7356601d7de27782c3925e6a8069 # Parent c724a51d4f5fb47fae0d64b98ae612c4556f70b7 added display of object id diff -r c724a51d4f5f -r 07fb949ff98f python/moving.py --- a/python/moving.py Sun Jul 31 03:52:25 2016 -0400 +++ b/python/moving.py Tue Sep 13 15:30:51 2016 -0400 @@ -6,7 +6,7 @@ from math import sqrt, atan2, cos, sin from numpy import median, array, zeros, hypot, NaN, std, floor, float32 -from matplotlib.pyplot import plot +from matplotlib.pyplot import plot, text from scipy.stats import scoreatpercentile from scipy.spatial.distance import cdist @@ -732,27 +732,29 @@ self.positions[1].append(self.positions[1][-1]) @staticmethod - def _plot(positions, options = '', withOrigin = False, lastCoordinate = None, timeStep = 1, **kwargs): + def _plot(positions, options = '', withOrigin = False, lastCoordinate = None, timeStep = 1, objNum = None, **kwargs): if lastCoordinate is None: plot(positions[0][::timeStep], positions[1][::timeStep], options, **kwargs) elif 0 <= lastCoordinate <= len(positions[0]): plot(positions[0][:lastCoordinate:timeStep], positions[1][:lastCoordinate:timeStep], options, **kwargs) if withOrigin: plot([positions[0][0]], [positions[1][0]], 'ro', **kwargs) - + if objNum is not None: + text(positions[0][0], positions[1][0], '{}'.format(objNum)) + def project(self, homography): return Trajectory(cvutils.projectTrajectory(homography, self.positions).tolist()) - def plot(self, options = '', withOrigin = False, timeStep = 1, **kwargs): - Trajectory._plot(self.positions, options, withOrigin, None, timeStep, **kwargs) + def plot(self, options = '', withOrigin = False, timeStep = 1, objNum = None, **kwargs): + Trajectory._plot(self.positions, options, withOrigin, None, timeStep, objNum, **kwargs) - def plotAt(self, lastCoordinate, options = '', withOrigin = False, timeStep = 1, **kwargs): - Trajectory._plot(self.positions, options, withOrigin, lastCoordinate, timeStep, **kwargs) + def plotAt(self, lastCoordinate, options = '', withOrigin = False, timeStep = 1, objNum = None, **kwargs): + Trajectory._plot(self.positions, options, withOrigin, lastCoordinate, timeStep, objNum, **kwargs) - def plotOnWorldImage(self, nPixelsPerUnitDistance, options = '', withOrigin = False, timeStep = 1, **kwargs): + def plotOnWorldImage(self, nPixelsPerUnitDistance, options = '', withOrigin = False, timeStep = 1, objNum = None, **kwargs): imgPositions = [[x*nPixelsPerUnitDistance for x in self.positions[0]], [x*nPixelsPerUnitDistance for x in self.positions[1]]] - Trajectory._plot(imgPositions, options, withOrigin, None, timeStep, **kwargs) + Trajectory._plot(imgPositions, options, withOrigin, None, timeStep, objNum, **kwargs) def getXCoordinates(self): return self.positions[0] @@ -1301,16 +1303,23 @@ def getYCoordinates(self): return self.positions.getYCoordinates() - def plot(self, options = '', withOrigin = False, timeStep = 1, withFeatures = False, **kwargs): + def plot(self, options = '', withOrigin = False, timeStep = 1, withFeatures = False, withIds = False, **kwargs): + if withIds: + objNum = self.getNum() + else: + objNum = None if withFeatures and self.hasFeatures(): for f in self.getFeatures(): f.positions.plot('r', True, timeStep, **kwargs) - self.positions.plot('bx-', True, timeStep, **kwargs) + self.positions.plot('bx-', True, timeStep, objNum, **kwargs) else: - self.positions.plot(options, withOrigin, timeStep, **kwargs) + self.positions.plot(options, withOrigin, timeStep, objNum, **kwargs) - def plotOnWorldImage(self, nPixelsPerUnitDistance, options = '', withOrigin = False, timeStep = 1, **kwargs): - self.positions.plotOnWorldImage(nPixelsPerUnitDistance, options, withOrigin, timeStep, **kwargs) + def plotOnWorldImage(self, nPixelsPerUnitDistance, options = '', withOrigin = False, timeStep = 1, withIds = False, **kwargs): + if withIds: + self.positions.plotOnWorldImage(nPixelsPerUnitDistance, options, withOrigin, timeStep, self.getNum(), **kwargs) + else: + self.positions.plotOnWorldImage(nPixelsPerUnitDistance, options, withOrigin, timeStep, None, **kwargs) def play(self, videoFilename, homography = None, undistort = False, intrinsicCameraMatrix = None, distortionCoefficients = None, undistortedImageMultiplication = 1.): cvutils.displayTrajectories(videoFilename, [self], homography = homography, firstFrameNum = self.getFirstInstant(), lastFrameNumArg = self.getLastInstant(), undistort = undistort, intrinsicCameraMatrix = intrinsicCameraMatrix, distortionCoefficients = distortionCoefficients, undistortedImageMultiplication = undistortedImageMultiplication)