diff trafficintelligence/processing.py @ 1077:3939ae415be0

Merging
author Wendlasida
date Fri, 20 Jul 2018 14:03:34 -0400
parents 092bd9c7deaf
children c67f8c36ebc7
line wrap: on
line diff
--- a/trafficintelligence/processing.py	Fri Jul 20 13:50:43 2018 -0400
+++ b/trafficintelligence/processing.py	Fri Jul 20 14:03:34 2018 -0400
@@ -3,7 +3,7 @@
 
 import numpy as np
 
-from trafficintelligence import ml
+from trafficintelligence import ml, storage, utils
 
 def extractSpeeds(objects, zone):
     speeds = {}
@@ -18,6 +18,27 @@
             objectsNotInZone.append(o)
     return speeds, objectsNotInZone
 
+def extractVideoSequenceSpeeds(dbFilename, siteName, nObjects, startTime, frameRate, minUserDurationSeconds, aggMethods, aggCentiles):
+    data = []
+    d = startTime.date()
+    t1 = startTime.time()
+    minUserDuration = minUserDurationSeconds*frameRate
+    print('Extracting speed from '+dbFilename)
+    aggFunctions, tmpheaders = utils.aggregationMethods(aggMethods, aggCentiles)
+    objects = storage.loadTrajectoriesFromSqlite(dbFilename, 'object', nObjects)
+    for o in objects:
+        if o.length() > minUserDuration:
+            row = [siteName, d, utils.framesToTime(o.getFirstInstant(), frameRate, t1), o.getUserType()]
+            tmp = o.getSpeeds()
+            for method,func in aggFunctions.items():
+                aggSpeeds = frameRate*3.6*func(tmp)
+                if method == 'centile':
+                    row.extend(aggSpeeds.tolist())
+                else:
+                    row.append(aggSpeeds)
+        data.append(row)
+    return data
+
 def learnAssignMotionPatterns(learn, assign, objects, similarities, minSimilarity, similarityFunc, minClusterSize = 0, optimizeCentroid = False, randomInitialization = False, removePrototypesAfterAssignment = False, initialPrototypes = []):
     '''Learns motion patterns