Mercurial Hosting > traffic-intelligence
comparison trafficintelligence/storage.py @ 1075:67144f26609e
Updates crop
author | Wendlasida |
---|---|
date | Wed, 11 Jul 2018 15:01:37 -0400 |
parents | d13f9bfbf3ff |
children | 3939ae415be0 |
comparison
equal
deleted
inserted
replaced
1054:d13f9bfbf3ff | 1075:67144f26609e |
---|---|
1355 class ProcessParameters(VideoFilenameAddable): | 1355 class ProcessParameters(VideoFilenameAddable): |
1356 '''Class for all parameters controlling data processing: input, | 1356 '''Class for all parameters controlling data processing: input, |
1357 method parameters, etc. for tracking and safety | 1357 method parameters, etc. for tracking and safety |
1358 | 1358 |
1359 Note: framerate is already taken into account''' | 1359 Note: framerate is already taken into account''' |
1360 | 1360 |
1361 def loadTrackerConfig(self, filename = None): | 1361 def loadConfigFile(self, filename): |
1362 from configparser import ConfigParser | 1362 from configparser import ConfigParser |
1363 | 1363 |
1364 config = ConfigParser({ 'acceleration-bound' : '3', | 1364 config = ConfigParser({ 'acceleration-bound' : '3', |
1365 'min-velocity-cosine' : '0.8', | 1365 'min-velocity-cosine' : '0.8', |
1366 'ndisplacements' : '3', | 1366 'ndisplacements' : '3', |
1367 'max-nfeatures' : '1000', | 1367 'max-nfeatures' : '1000', |
1368 'feature-quality' : '0.0812219538558', | 1368 'feature-quality' : '0.0812219538558', |
1377 'feature-flag' : '0', | 1377 'feature-flag' : '0', |
1378 'min-feature-eig-threshold' : '1e-4', | 1378 'min-feature-eig-threshold' : '1e-4', |
1379 'min-feature-time' : '15', | 1379 'min-feature-time' : '15', |
1380 'min-feature-displacement' : '0.05', | 1380 'min-feature-displacement' : '0.05', |
1381 'tracker-reload-time' : '10'}, strict=False) | 1381 'tracker-reload-time' : '10'}, strict=False) |
1382 if filename is not None: | |
1383 config.read_file(addSectionHeader(utils.openCheck(filename))) | |
1384 self.sectionHeader = config.sections()[0] | |
1385 else: | |
1386 self.sectionHeader = 'DEFAULT' | |
1387 | |
1388 | |
1389 #Tracker parameters | |
1390 self.accelerationBound = config.getint(self.sectionHeader, 'acceleration-bound') | |
1391 self.minVelocityCosine = config.getfloat(self.sectionHeader, 'min-velocity-cosine') | |
1392 self.ndisplacements = config.getint(self.sectionHeader, 'ndisplacements') | |
1393 self.maxNFeatures = config.getint(self.sectionHeader, 'max-nfeatures') | |
1394 self.minFeatureDistanceKLT = config.getfloat(self.sectionHeader, 'min-feature-distanceklt') | |
1395 self.featureQuality = config.getfloat(self.sectionHeader, 'feature-quality') | |
1396 self.blockSize = config.getint(self.sectionHeader, 'block-size') | |
1397 self.useHarrisDetector = config.getboolean(self.sectionHeader, 'use-harris-detector') | |
1398 self.k = config.getfloat(self.sectionHeader, 'k') | |
1399 self.winSize = config.getint(self.sectionHeader, 'window-size') | |
1400 self.pyramidLevel = config.getint(self.sectionHeader, 'pyramid-level') | |
1401 self.maxNumberTrackingIterations = config.getint(self.sectionHeader, 'max-number-iterations') | |
1402 self.minTrackingError = config.getfloat(self.sectionHeader, 'min-tracking-error') | |
1403 self.featureFlags = config.getboolean(self.sectionHeader, 'feature-flag') | |
1404 self.minFeatureEigThreshold = config.getfloat(self.sectionHeader, 'min-feature-eig-threshold') | |
1405 self.minFeatureTime = config.getint(self.sectionHeader, 'min-feature-time') | |
1406 self.minFeatureDisplacement = config.getfloat(self.sectionHeader, 'min-feature-displacement') | |
1407 self.updateTimer = config.getint(self.sectionHeader, 'tracker-reload-time') | |
1408 | |
1409 def loadHomographyConfig(self, filename = None): | |
1410 | |
1411 if filename is None: | |
1412 self.homographyFilename = None | |
1413 self.homography = None | |
1414 else : | |
1415 from configparser import ConfigParser | |
1416 config = ConfigParser(strict=False) | |
1417 config.read_file(addSectionHeader(utils.openCheck(filename))) | |
1418 parentPath = Path(filename).parent | |
1419 self.sectionHeader = config.sections()[0] | |
1420 self.homographyFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'homography-filename')) | |
1421 if Path(self.homographyFilename).exists(): | |
1422 self.homography = loadtxt(self.homographyFilename) | |
1423 else: | |
1424 self.homography = None | |
1425 | |
1426 def loadDistortionConfig(self, filename = None): | |
1427 if filename is None: | |
1428 self.intrinsicCameraFilename = None | |
1429 self.intrinsicCameraMatrix = None | |
1430 self.distortionCoefficients = None | |
1431 self.undistort = False | |
1432 self.undistortedImageMultiplication = 1. | |
1433 else: | |
1434 from configparser import ConfigParser | |
1435 config = ConfigParser(strict=False) | |
1436 config.read_file(addSectionHeader(utils.openCheck(filename))) | |
1437 parentPath = Path(filename).parent | |
1438 self.sectionHeader = config.sections()[0] | |
1439 self.intrinsicCameraFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'intrinsic-camera-filename')) | |
1440 if Path(self.intrinsicCameraFilename).exists(): | |
1441 self.intrinsicCameraMatrix = loadtxt(self.intrinsicCameraFilename) | |
1442 else: | |
1443 self.intrinsicCameraMatrix = None | |
1444 distortionCoefficients = getValuesFromINIFile(filename, 'distortion-coefficients', '=') | |
1445 self.distortionCoefficients = [float(x) for x in distortionCoefficients] | |
1446 self.undistortedImageMultiplication = config.getfloat(self.sectionHeader, 'undistorted-size-multiplication') | |
1447 self.undistort = config.getboolean(self.sectionHeader, 'undistort') | |
1448 | |
1449 | |
1450 def loadConfigFile(self, filename): | |
1451 from configparser import ConfigParser | |
1452 | |
1453 config = ConfigParser(strict=False) | |
1454 config.read_file(addSectionHeader(utils.openCheck(filename))) | 1382 config.read_file(addSectionHeader(utils.openCheck(filename))) |
1455 | |
1456 parentPath = Path(filename).parent | 1383 parentPath = Path(filename).parent |
1457 self.sectionHeader = config.sections()[0] | 1384 self.sectionHeader = config.sections()[0] |
1458 # Tracking/display parameters | 1385 # Tracking/display parameters |
1459 self.videoFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'video-filename')) | 1386 self.videoFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'video-filename')) |
1460 self.databaseFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'database-filename')) | 1387 self.databaseFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'database-filename')) |
1472 self.distortionCoefficients = [float(x) for x in distortionCoefficients] | 1399 self.distortionCoefficients = [float(x) for x in distortionCoefficients] |
1473 self.undistortedImageMultiplication = config.getfloat(self.sectionHeader, 'undistorted-size-multiplication') | 1400 self.undistortedImageMultiplication = config.getfloat(self.sectionHeader, 'undistorted-size-multiplication') |
1474 self.undistort = config.getboolean(self.sectionHeader, 'undistort') | 1401 self.undistort = config.getboolean(self.sectionHeader, 'undistort') |
1475 self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') | 1402 self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') |
1476 self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') | 1403 self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') |
1477 | |
1478 self.minFeatureTime = config.getint(self.sectionHeader, 'min-feature-time') | |
1479 | 1404 |
1480 self.classifierFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'classifier-filename')) | 1405 self.classifierFilename = utils.getRelativeFilename(parentPath, config.get(self.sectionHeader, 'classifier-filename')) |
1481 | 1406 |
1482 # Safety parameters | 1407 # Safety parameters |
1483 self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate | 1408 self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate |
1495 self.constantSpeedPrototypePrediction = config.getboolean(self.sectionHeader, 'constant-speed') | 1420 self.constantSpeedPrototypePrediction = config.getboolean(self.sectionHeader, 'constant-speed') |
1496 self.maxLcssDistance = config.getfloat(self.sectionHeader, 'max-lcss-distance') | 1421 self.maxLcssDistance = config.getfloat(self.sectionHeader, 'max-lcss-distance') |
1497 self.lcssMetric = config.get(self.sectionHeader, 'lcss-metric') | 1422 self.lcssMetric = config.get(self.sectionHeader, 'lcss-metric') |
1498 self.minLcssSimilarity = config.getfloat(self.sectionHeader, 'min-lcss-similarity') | 1423 self.minLcssSimilarity = config.getfloat(self.sectionHeader, 'min-lcss-similarity') |
1499 | 1424 |
1500 self.configFilename = filename | 1425 # Tracking parameters |
1426 self.accelerationBound = config.getint(self.sectionHeader, 'acceleration-bound') | |
1427 self.minVelocityCosine = config.getfloat(self.sectionHeader, 'min-velocity-cosine') | |
1428 self.ndisplacements = config.getint(self.sectionHeader, 'ndisplacements') | |
1429 self.maxNFeatures = config.getint(self.sectionHeader, 'max-nfeatures') | |
1430 self.minFeatureDistanceKLT = config.getfloat(self.sectionHeader, 'min-feature-distanceklt') | |
1431 self.featureQuality = config.getfloat(self.sectionHeader, 'feature-quality') | |
1432 self.blockSize = config.getint(self.sectionHeader, 'block-size') | |
1433 self.useHarrisDetector = config.getboolean(self.sectionHeader, 'use-harris-detector') | |
1434 self.k = config.getfloat(self.sectionHeader, 'k') | |
1435 self.winSize = config.getint(self.sectionHeader, 'window-size') | |
1436 self.pyramidLevel = config.getint(self.sectionHeader, 'pyramid-level') | |
1437 self.maxNumberTrackingIterations = config.getint(self.sectionHeader, 'max-number-iterations') | |
1438 self.minTrackingError = config.getfloat(self.sectionHeader, 'min-tracking-error') | |
1439 self.featureFlags = config.getboolean(self.sectionHeader, 'feature-flag') | |
1440 self.minFeatureEigThreshold = config.getfloat(self.sectionHeader, 'min-feature-eig-threshold') | |
1441 self.minFeatureTime = config.getint(self.sectionHeader, 'min-feature-time') | |
1442 self.minFeatureDisplacement = config.getfloat(self.sectionHeader, 'min-feature-displacement') | |
1443 self.updateTimer = config.getint(self.sectionHeader, 'tracker-reload-time') | |
1444 | |
1501 | 1445 |
1502 def __init__(self, filename = None): | 1446 def __init__(self, filename = None): |
1503 if filename is not None and Path(filename).exists(): | 1447 if filename is not None and Path(filename).exists(): |
1504 self.loadConfigFile(filename) | 1448 self.loadConfigFile(filename) |
1505 else: | 1449 else: |