diff python/storage.py @ 1021:16932cefabc1

work on paths in line with new configurations from tracker
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 05 Jun 2018 17:02:28 -0400
parents 75601be6019f
children b7689372c0ec
line wrap: on
line diff
--- a/python/storage.py	Tue Jun 05 14:33:31 2018 -0400
+++ b/python/storage.py	Tue Jun 05 17:02:28 2018 -0400
@@ -1277,10 +1277,12 @@
 
         config = ConfigParser()
         config.read_file(addSectionHeader(openCheck(filename)))
+
+        parentPath = Path(filename).parent
         self.sectionHeader = config.sections()[0]
 
-        self.pedBikeCarSVMFilename = config.get(self.sectionHeader, 'pbv-svm-filename')
-        self.bikeCarSVMFilename = config.get(self.sectionHeader, 'bv-svm-filename')
+        self.pedBikeCarSVMFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'pbv-svm-filename'))
+        self.bikeCarSVMFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'bv-svm-filename'))
         self.percentIncreaseCrop = config.getfloat(self.sectionHeader, 'percent-increase-crop')
         self.minNPixels = config.getint(self.sectionHeader, 'min-npixels-crop')
         x  = config.getint(self.sectionHeader, 'hog-rescale-size')
@@ -1345,16 +1347,17 @@
         config = ConfigParser(strict=False)
         config.read_file(addSectionHeader(openCheck(filename)))
 
+        parentPath = Path(filename).parent
         self.sectionHeader = config.sections()[0]
         # Tracking/display parameters
-        self.videoFilename = config.get(self.sectionHeader, 'video-filename')
-        self.databaseFilename = config.get(self.sectionHeader, 'database-filename')
-        self.homographyFilename = config.get(self.sectionHeader, 'homography-filename')
+        self.videoFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'video-filename'))
+        self.databaseFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'database-filename'))
+        self.homographyFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'homography-filename'))
         if Path(self.homographyFilename).exists():
             self.homography = loadtxt(self.homographyFilename)
         else:
             self.homography = None
-        self.intrinsicCameraFilename = config.get(self.sectionHeader, 'intrinsic-camera-filename')
+        self.intrinsicCameraFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'intrinsic-camera-filename'))
         if Path(self.intrinsicCameraFilename).exists():
             self.intrinsicCameraMatrix = loadtxt(self.intrinsicCameraFilename)
         else:
@@ -1368,7 +1371,7 @@
 
         self.minFeatureTime = config.getfloat(self.sectionHeader, 'min-feature-time')
         
-        self.classifierFilename = config.get(self.sectionHeader, 'classifier-filename')
+        self.classifierFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'classifier-filename'))
         
         # Safety parameters
         self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate
@@ -1398,6 +1401,7 @@
     '''Loads information from configuration file
     then checks what was passed on the command line
     for override (eg video filename and database filename'''
+    parentPath = Path(args.configFilename).parent
     if args.configFilename is not None: # consider there is a configuration file
         params = ProcessParameters(args.configFilename)
         videoFilename = params.videoFilename
@@ -1421,12 +1425,13 @@
         firstFrameNum = 0
 
     # override video and database filenames if present on command line
+    # if not absolute, make all filenames relative to the location of the configuration filename
     if args.videoFilename is not None:
-        videoFilename = args.videoFilename
+        videoFilename = utils.getRelativeFilename(parentPath, args.videoFilename)
     else:
         videoFilename = params.videoFilename
     if args.databaseFilename is not None:
-        databaseFilename = args.databaseFilename
+        databaseFilename = utils.getRelativeFilename(parentPath, args.databaseFilename)
     else:
         databaseFilename = params.databaseFilename