diff python/moving.py @ 851:07fb949ff98f

added display of object id
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 13 Sep 2016 15:30:51 -0400
parents aa98e773ac91
children a8ca72dc1564
line wrap: on
line diff
--- 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)