diff trafficintelligence/processing.py @ 1066:862b55a87e63

work on extracting information
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 16 Jul 2018 01:14:37 -0400
parents 25db2383e7ae
children 092bd9c7deaf
line wrap: on
line diff
--- a/trafficintelligence/processing.py	Mon Jul 16 00:05:17 2018 -0400
+++ b/trafficintelligence/processing.py	Mon Jul 16 01:14:37 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,26 @@
             objectsNotInZone.append(o)
     return speeds, objectsNotInZone
 
+def extractVideoSequenceSpeeds(dbFilename, siteName, nObjects, startTime, frameRate, minUserDurationSeconds, aggFunctions):
+    data = []
+    d = startTime.date()
+    t1 = startTime.time()
+    minUserDuration = minUserDurationSeconds*frameRate
+    print('Extracting speed from '+dbFilename)
+    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 += 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