comparison 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
comparison
equal deleted inserted replaced
1020:9fb82fe0156f 1021:16932cefabc1
1275 def loadConfigFile(self, filename): 1275 def loadConfigFile(self, filename):
1276 from configparser import ConfigParser 1276 from configparser import ConfigParser
1277 1277
1278 config = ConfigParser() 1278 config = ConfigParser()
1279 config.read_file(addSectionHeader(openCheck(filename))) 1279 config.read_file(addSectionHeader(openCheck(filename)))
1280
1281 parentPath = Path(filename).parent
1280 self.sectionHeader = config.sections()[0] 1282 self.sectionHeader = config.sections()[0]
1281 1283
1282 self.pedBikeCarSVMFilename = config.get(self.sectionHeader, 'pbv-svm-filename') 1284 self.pedBikeCarSVMFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'pbv-svm-filename'))
1283 self.bikeCarSVMFilename = config.get(self.sectionHeader, 'bv-svm-filename') 1285 self.bikeCarSVMFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'bv-svm-filename'))
1284 self.percentIncreaseCrop = config.getfloat(self.sectionHeader, 'percent-increase-crop') 1286 self.percentIncreaseCrop = config.getfloat(self.sectionHeader, 'percent-increase-crop')
1285 self.minNPixels = config.getint(self.sectionHeader, 'min-npixels-crop') 1287 self.minNPixels = config.getint(self.sectionHeader, 'min-npixels-crop')
1286 x = config.getint(self.sectionHeader, 'hog-rescale-size') 1288 x = config.getint(self.sectionHeader, 'hog-rescale-size')
1287 self.hogRescaleSize = (x, x) 1289 self.hogRescaleSize = (x, x)
1288 self.hogNOrientations = config.getint(self.sectionHeader, 'hog-norientations') 1290 self.hogNOrientations = config.getint(self.sectionHeader, 'hog-norientations')
1343 from configparser import ConfigParser 1345 from configparser import ConfigParser
1344 1346
1345 config = ConfigParser(strict=False) 1347 config = ConfigParser(strict=False)
1346 config.read_file(addSectionHeader(openCheck(filename))) 1348 config.read_file(addSectionHeader(openCheck(filename)))
1347 1349
1350 parentPath = Path(filename).parent
1348 self.sectionHeader = config.sections()[0] 1351 self.sectionHeader = config.sections()[0]
1349 # Tracking/display parameters 1352 # Tracking/display parameters
1350 self.videoFilename = config.get(self.sectionHeader, 'video-filename') 1353 self.videoFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'video-filename'))
1351 self.databaseFilename = config.get(self.sectionHeader, 'database-filename') 1354 self.databaseFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'database-filename'))
1352 self.homographyFilename = config.get(self.sectionHeader, 'homography-filename') 1355 self.homographyFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'homography-filename'))
1353 if Path(self.homographyFilename).exists(): 1356 if Path(self.homographyFilename).exists():
1354 self.homography = loadtxt(self.homographyFilename) 1357 self.homography = loadtxt(self.homographyFilename)
1355 else: 1358 else:
1356 self.homography = None 1359 self.homography = None
1357 self.intrinsicCameraFilename = config.get(self.sectionHeader, 'intrinsic-camera-filename') 1360 self.intrinsicCameraFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'intrinsic-camera-filename'))
1358 if Path(self.intrinsicCameraFilename).exists(): 1361 if Path(self.intrinsicCameraFilename).exists():
1359 self.intrinsicCameraMatrix = loadtxt(self.intrinsicCameraFilename) 1362 self.intrinsicCameraMatrix = loadtxt(self.intrinsicCameraFilename)
1360 else: 1363 else:
1361 self.intrinsicCameraMatrix = None 1364 self.intrinsicCameraMatrix = None
1362 distortionCoefficients = getValuesFromINIFile(filename, 'distortion-coefficients', '=') 1365 distortionCoefficients = getValuesFromINIFile(filename, 'distortion-coefficients', '=')
1366 self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') 1369 self.firstFrameNum = config.getint(self.sectionHeader, 'frame1')
1367 self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') 1370 self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps')
1368 1371
1369 self.minFeatureTime = config.getfloat(self.sectionHeader, 'min-feature-time') 1372 self.minFeatureTime = config.getfloat(self.sectionHeader, 'min-feature-time')
1370 1373
1371 self.classifierFilename = config.get(self.sectionHeader, 'classifier-filename') 1374 self.classifierFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'classifier-filename'))
1372 1375
1373 # Safety parameters 1376 # Safety parameters
1374 self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate 1377 self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate
1375 self.predictionTimeHorizon = config.getfloat(self.sectionHeader, 'prediction-time-horizon')*self.videoFrameRate 1378 self.predictionTimeHorizon = config.getfloat(self.sectionHeader, 'prediction-time-horizon')*self.videoFrameRate
1376 self.collisionDistance = config.getfloat(self.sectionHeader, 'collision-distance') 1379 self.collisionDistance = config.getfloat(self.sectionHeader, 'collision-distance')
1396 1399
1397 def processVideoArguments(args): 1400 def processVideoArguments(args):
1398 '''Loads information from configuration file 1401 '''Loads information from configuration file
1399 then checks what was passed on the command line 1402 then checks what was passed on the command line
1400 for override (eg video filename and database filename''' 1403 for override (eg video filename and database filename'''
1404 parentPath = Path(args.configFilename).parent
1401 if args.configFilename is not None: # consider there is a configuration file 1405 if args.configFilename is not None: # consider there is a configuration file
1402 params = ProcessParameters(args.configFilename) 1406 params = ProcessParameters(args.configFilename)
1403 videoFilename = params.videoFilename 1407 videoFilename = params.videoFilename
1404 databaseFilename = params.databaseFilename 1408 databaseFilename = params.databaseFilename
1405 if params.homography is not None: 1409 if params.homography is not None:
1419 undistortedImageMultiplication = None 1423 undistortedImageMultiplication = None
1420 undistort = False 1424 undistort = False
1421 firstFrameNum = 0 1425 firstFrameNum = 0
1422 1426
1423 # override video and database filenames if present on command line 1427 # override video and database filenames if present on command line
1428 # if not absolute, make all filenames relative to the location of the configuration filename
1424 if args.videoFilename is not None: 1429 if args.videoFilename is not None:
1425 videoFilename = args.videoFilename 1430 videoFilename = utils.getRelativeFilename(parentPath, args.videoFilename)
1426 else: 1431 else:
1427 videoFilename = params.videoFilename 1432 videoFilename = params.videoFilename
1428 if args.databaseFilename is not None: 1433 if args.databaseFilename is not None:
1429 databaseFilename = args.databaseFilename 1434 databaseFilename = utils.getRelativeFilename(parentPath, args.databaseFilename)
1430 else: 1435 else:
1431 databaseFilename = params.databaseFilename 1436 databaseFilename = params.databaseFilename
1432 1437
1433 return params, videoFilename, databaseFilename, invHomography, intrinsicCameraMatrix, distortionCoefficients, undistortedImageMultiplication, undistort, firstFrameNum 1438 return params, videoFilename, databaseFilename, invHomography, intrinsicCameraMatrix, distortionCoefficients, undistortedImageMultiplication, undistort, firstFrameNum
1434 1439