Mercurial Hosting > traffic-intelligence
diff trafficintelligence/storage.py @ 1052:1748c02f9ac3
Modifying storage.py [configloaders]
author | Wendlasida |
---|---|
date | Thu, 05 Jul 2018 13:48:12 -0400 |
parents | fc7c0f38e8a6 |
children | 60cc87e824c4 |
line wrap: on
line diff
--- a/trafficintelligence/storage.py Wed Jul 04 16:21:09 2018 -0400 +++ b/trafficintelligence/storage.py Thu Jul 05 13:48:12 2018 -0400 @@ -414,7 +414,7 @@ for feature in obj.getFeatures(): featureNum = feature.getNum() cursor.execute(objectFeatureQuery, (obj.getNum(), featureNum)) - cursor.execute(objectQuery, (obj.getNum(), obj.getUserType(), 1)) + cursor.execute(objectQuery, (obj.getNum(), obj.getUserType(), obj.nObjects if hasattr(obj, 'nObjects') and obj.nObjects is not None else 1)) # Parse curvilinear position structure elif(trajectoryType == 'curvilinear'): createCurvilinearTrajectoryTable(cursor) @@ -1363,6 +1363,95 @@ method parameters, etc. for tracking and safety Note: framerate is already taken into account''' + + def loadTrackerConfig(self, filename = None): + from configparser import ConfigParser + + config = ConfigParser(strict=False) + config['DEFAULT']['acceleration-bound'] = '3' + config['DEFAULT']['min-velocity-cosine'] = '0.8' + config['DEFAULT']['ndisplacements'] = '3' + config['DEFAULT']['max-nfeatures'] = '1000' + config['DEFAULT']['feature-quality'] = '0.0812219538558' + config['DEFAULT']['min-feature-distanceklt'] = '3.54964337411' + config['DEFAULT']['block-size'] = '7' + config['DEFAULT']['use-harris-detector'] = 'false' + config['DEFAULT']['k'] = '0.04' + config['DEFAULT']['window-size'] = '6' + config['DEFAULT']['pyramid-level'] = '5' + config['DEFAULT']['min-tracking-error'] = '0.183328975142' + config['DEFAULT']['max-number-iterations'] = '20' + config['DEFAULT']['feature-flag'] = '0' + config['DEFAULT']['min-feature-eig-threshold'] = '1e-4' + config['DEFAULT']['min-feature-time'] = '15' + config['DEFAULT']['min-feature-displacement'] = '0.05' + config['DEFAULT']['tracker-reload-time'] = '10' + + self.sectionHeader = config.sections()[0] + + if filename is not None: + config.read_file(addSectionHeader(utils.openCheck(filename))) + + #Tracker parameters + self.accelerationBound = config.getint(self.sectionHeader, 'acceleration-bound') + self.minVelocityCosine = config.getfloat(self.sectionHeader, 'min-velocity-cosine') + self.ndisplacements = config.getfloat(self.sectionHeader, 'ndisplacements') + self.maxNFeatures = config.getint(self.sectionHeader, 'max-nfeatures') + self.minFeatureDistanceKLT = config.getfloat(self.sectionHeader, 'min-feature-distanceklt') + self.featureQuality = config.getfloat(self.sectionHeader, 'feature-quality') + self.blockSize = config.getint(self.sectionHeader, 'block-size') + self.useHarrisDetector = config.getboolean(self.sectionHeader, 'use-harris-detector') + self.k = config.getfloat(self.sectionHeader, 'k') + self.winSize = config.getint(self.sectionHeader, 'window-size') + self.pyramidLevel = config.getint(self.sectionHeader, 'pyramid-level') + self.maxNumberTrackingIterations = config.getint(self.sectionHeader, 'max-number-iterations') + self.minTrackingError = config.getfloat(self.sectionHeader, 'min-tracking-error') + self.featureFlags = config.getboolean(self.sectionHeader, 'feature-flag') + self.minFeatureEigThreshold = config.getfloat(self.sectionHeader, 'min-feature-eig-threshold') + self.minFeatureTime = config.getint(self.sectionHeader, 'min-feature-time') + self.minFeatureDisplacement = config.getfloat(self.sectionHeader, 'min-feature-displacement') + self.updateTimer = config.getint(self.sectionHeader, 'tracker-reload-time') + + def loadHomographyConfig(self, filename = None): + + if filename is None: + self.homographyFilename = None + self.homography = None + else : + from configparser import ConfigParser + config = ConfigParser(strict=False) + config.read_file(addSectionHeader(utils.openCheck(filename))) + parentPath = Path(filename).parent + self.sectionHeader = config.sections()[0] + 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 + + def loadDistortionConfig(self, filename = None): + if filename is None: + self.intrinsicCameraFilename = None + self.intrinsicCameraMatrix = None + self.distortionCoefficients = None + self.undistort = False + self.undistortedImageMultiplication = 1. + else: + from configparser import ConfigParser + config = ConfigParser(strict=False) + config.read_file(addSectionHeader(utils.openCheck(filename))) + parentPath = Path(filename).parent + self.sectionHeader = config.sections()[0] + self.intrinsicCameraFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'intrinsic-camera-filename')) + if Path(self.intrinsicCameraFilename).exists(): + self.intrinsicCameraMatrix = loadtxt(self.intrinsicCameraFilename) + else: + self.intrinsicCameraMatrix = None + distortionCoefficients = getValuesFromINIFile(filename, 'distortion-coefficients', '=') + self.distortionCoefficients = [float(x) for x in distortionCoefficients] + self.undistortedImageMultiplication = config.getfloat(self.sectionHeader, 'undistorted-size-multiplication') + self.undistort = config.getboolean(self.sectionHeader, 'undistort') + def loadConfigFile(self, filename): from configparser import ConfigParser @@ -1392,7 +1481,7 @@ self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') - self.minFeatureTime = config.getfloat(self.sectionHeader, 'min-feature-time') + self.minFeatureTime = config.getint(self.sectionHeader, 'min-feature-time') self.classifierFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'classifier-filename')) @@ -1413,12 +1502,15 @@ self.maxLcssDistance = config.getfloat(self.sectionHeader, 'max-lcss-distance') self.lcssMetric = config.get(self.sectionHeader, 'lcss-metric') self.minLcssSimilarity = config.getfloat(self.sectionHeader, 'min-lcss-similarity') + + self.configFilename = filename def __init__(self, filename = None): if filename is not None and Path(filename).exists(): self.loadConfigFile(filename) else: print('Configuration filename {} could not be loaded.'.format(filename)) + self.configFilename = filename def processVideoArguments(args): '''Loads information from configuration file