diff scripts/display-trajectories.py @ 901:753a081989e2

factorized some argument handling code
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Thu, 22 Jun 2017 12:02:34 -0400
parents 95e7622b11be
children c69a8defe5c3
line wrap: on
line diff
--- a/scripts/display-trajectories.py	Wed Jun 21 17:49:58 2017 -0400
+++ b/scripts/display-trajectories.py	Thu Jun 22 12:02:34 2017 -0400
@@ -4,7 +4,7 @@
 
 import storage, cvutils, utils
 
-from numpy.linalg.linalg import inv
+from numpy.linalg import inv
 from numpy import loadtxt
 
 parser = argparse.ArgumentParser(description='The program displays feature or object trajectories overlaid over the video frames.', epilog = 'Either the configuration filename or the other parameters (at least video and database filenames) need to be provided.')
@@ -18,48 +18,24 @@
 parser.add_argument('--undistorted-multiplication', dest = 'undistortedImageMultiplication', help = 'undistorted image multiplication', type = float)
 parser.add_argument('-u', dest = 'undistort', help = 'undistort the video (because features have been extracted that way)', action = 'store_true')
 parser.add_argument('-f', dest = 'firstFrameNum', help = 'number of first frame number to display', type = int)
+parser.add_argument('-l', dest = 'lastFrameNum', help = 'number of last frame number to save (for image saving, no display is made)', type = int)
 parser.add_argument('-r', dest = 'rescale', help = 'rescaling factor for the displayed image', default = 1., type = float)
 parser.add_argument('-s', dest = 'nFramesStep', help = 'number of frames between each display', default = 1, type = int)
 parser.add_argument('-n', dest = 'nObjects', help = 'number of objects to display', type = int)
 parser.add_argument('--save-images', dest = 'saveAllImages', help = 'save all images', action = 'store_true')
-parser.add_argument('--last-frame', dest = 'lastFrameNum', help = 'number of last frame number to save (for image saving, no display is made)', type = int)
 
 args = parser.parse_args()
 
-if args.configFilename is not None: # consider there is a configuration file
-    params = storage.ProcessParameters(args.configFilename)
-    videoFilename = params.videoFilename
-    databaseFilename = params.databaseFilename
-    if params.homography is not None:
-        homography = inv(params.homography)
-    else:
-        homography = None
-    intrinsicCameraMatrix = params.intrinsicCameraMatrix
-    distortionCoefficients = params.distortionCoefficients
-    undistortedImageMultiplication = params.undistortedImageMultiplication
-    undistort = params.undistort
-    firstFrameNum = params.firstFrameNum
-else:
-    homography = None
-    undistort = False
-    intrinsicCameraMatrix = None
-    distortionCoefficients = []
-    undistortedImageMultiplication = None
-    firstFrameNum = 0
+params, videoFilename, databaseFilename, invHomography, intrinsicCameraMatrix, distortionCoefficients, undistortedImageMultiplication, undistort, firstFrameNum = storage.processVideoArguments(args)
 
-if args.configFilename is None and args.videoFilename is not None:
-    videoFilename = args.videoFilename
-if args.configFilename is None and args.databaseFilename is not None:
-    databaseFilename = args.databaseFilename
-if args.configFilename is None and args.homographyFilename is not None:
-    homography = inv(loadtxt(args.homographyFilename))            
-if args.configFilename is None and args.intrinsicCameraMatrixFilename is not None:
+if args.homographyFilename is not None:
+    invHomography = inv(loadtxt(args.homographyFilename))            
+if args.intrinsicCameraMatrixFilename is not None:
     intrinsicCameraMatrix = loadtxt(args.intrinsicCameraMatrixFilename)
-if args.configFilename is None and args.distortionCoefficients is not None:
+if args.distortionCoefficients is not None:
     distortionCoefficients = args.distortionCoefficients
-if args.configFilename is None and args.undistortedImageMultiplication is not None:
+if args.undistortedImageMultiplication is not None:
     undistortedImageMultiplication = args.undistortedImageMultiplication
-
 if args.firstFrameNum is not None:
     firstFrameNum = args.firstFrameNum
 if args.nObjects is not None:
@@ -69,4 +45,4 @@
 
 objects = storage.loadTrajectoriesFromSqlite(databaseFilename, args.trajectoryType, nObjects)
 boundingBoxes = storage.loadBoundingBoxTableForDisplay(databaseFilename)
-cvutils.displayTrajectories(videoFilename, objects, boundingBoxes, homography, firstFrameNum, args.lastFrameNum, rescale = args.rescale, nFramesStep = args.nFramesStep, saveAllImages = args.saveAllImages, undistort = (undistort or args.undistort), intrinsicCameraMatrix = intrinsicCameraMatrix, distortionCoefficients = distortionCoefficients, undistortedImageMultiplication = undistortedImageMultiplication)
+cvutils.displayTrajectories(videoFilename, objects, boundingBoxes, invHomography, firstFrameNum, args.lastFrameNum, rescale = args.rescale, nFramesStep = args.nFramesStep, saveAllImages = args.saveAllImages, undistort = (undistort or args.undistort), intrinsicCameraMatrix = intrinsicCameraMatrix, distortionCoefficients = distortionCoefficients, undistortedImageMultiplication = undistortedImageMultiplication)