comparison python/utils.py @ 397:b36b00dd27c3

added function to read scene metadata
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sun, 28 Jul 2013 18:04:20 -0400
parents 6fba1ab040f1
children 3399bd48cb40
comparison
equal deleted inserted replaced
396:167f6ec44ec5 397:b36b00dd27c3
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 ''' Generic utilities.''' 2 ''' Generic utilities.'''
3 3
4 #from numpy import * 4 #from numpy import *
5 #from pylab import * 5 #from pylab import *
6 from datetime import time 6 from datetime import time, datetime
7 7
8 __metaclass__ = type 8 __metaclass__ = type
9 9
10 commentChar = '#' 10 commentChar = '#'
11 11
147 147
148 def framesToTime(nFrames, frameRate, initialTime = time()): 148 def framesToTime(nFrames, frameRate, initialTime = time()):
149 '''returns a datetime.time for the time in hour, minutes and seconds 149 '''returns a datetime.time for the time in hour, minutes and seconds
150 initialTime is a datetime.time''' 150 initialTime is a datetime.time'''
151 from math import floor 151 from math import floor
152 from datetime import time
153 seconds = int(floor(float(nFrames)/float(frameRate))+initialTime.hour*3600+initialTime.minute*60+initialTime.second) 152 seconds = int(floor(float(nFrames)/float(frameRate))+initialTime.hour*3600+initialTime.minute*60+initialTime.second)
154 h = int(floor(seconds/3600.)) 153 h = int(floor(seconds/3600.))
155 seconds = seconds - h*3600 154 seconds = seconds - h*3600
156 m = int(floor(seconds/60)) 155 m = int(floor(seconds/60))
157 seconds = seconds - m*60 156 seconds = seconds - m*60
499 print(optionValues) 498 print(optionValues)
500 sys.exit() 499 sys.exit()
501 500
502 return optionValues 501 return optionValues
503 502
503
504 #########################
505 # Utils to read .ini type text files for configuration, meta data...
506 #########################
507
504 class TrackingParameters: 508 class TrackingParameters:
505 def loadConfigFile(self, filename): 509 def loadConfigFile(self, filename):
506 from ConfigParser import ConfigParser 510 from ConfigParser import ConfigParser
507 from numpy import loadtxt 511 from numpy import loadtxt
508 from os import path 512 from os import path
529 self.minAcceleration = config.getfloat(self.sectionHeader, 'min-acceleration')/self.videoFrameRate**2 533 self.minAcceleration = config.getfloat(self.sectionHeader, 'min-acceleration')/self.videoFrameRate**2
530 self.maxAcceleration = config.getfloat(self.sectionHeader, 'max-acceleration')/self.videoFrameRate**2 534 self.maxAcceleration = config.getfloat(self.sectionHeader, 'max-acceleration')/self.videoFrameRate**2
531 self.maxSteering = config.getfloat(self.sectionHeader, 'max-steering')/self.videoFrameRate 535 self.maxSteering = config.getfloat(self.sectionHeader, 'max-steering')/self.videoFrameRate
532 self.useFeaturesForPrediction = config.getboolean(self.sectionHeader, 'use-features-prediction') 536 self.useFeaturesForPrediction = config.getboolean(self.sectionHeader, 'use-features-prediction')
533 537
538 class SceneParameters:
539 def __init__(self, config, sectionName):
540 from ConfigParser import NoOptionError
541 from ast import literal_eval
542 try:
543 self.sitename = config.get(sectionName, 'sitename')
544 self.databaseFilename = config.get(sectionName, 'data_filename')
545 self.homographyFilename = config.get(sectionName, 'homography_filename')
546 self.videoFilename = config.get(sectionName, 'video_filename')
547 self.date = datetime.strptime(config.get(sectionName, 'date'), "%Y-%m-%d %H:%M:%S") # 2011-06-22 11:00:39
548 self.translation = literal_eval(config.get(sectionName, 'translation')) # = [0.0, 0.0]
549 self.rotation = config.getfloat(sectionName, 'rotation')
550 self.duration = config.getint(sectionName, 'duration')
551 except NoOptionError as e:
552 print(e)
553 print('Not a section for scene meta-data')
554
555 @staticmethod
556 def loadConfigFile(filename):
557 from ConfigParser import ConfigParser
558 config = ConfigParser()
559 config.readfp(openCheck(filename))
560 return [SceneParameters(config, sectionName) for sectionName in config.sections()]
561
562
534 ######################### 563 #########################
535 # sqlite 564 # sqlite
536 ######################### 565 #########################
537 566
538 def printDBError(error): 567 def printDBError(error):