changeset 204:966c2cd2bd9f

added code to load object trajectories (average of features)
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 06 Mar 2012 18:44:03 -0500
parents e2f31813ade6
children aeaaf5579b46
files python/cvutils.py python/storage.py
diffstat 2 files changed, 26 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/python/cvutils.py	Tue Mar 06 18:10:19 2012 -0500
+++ b/python/cvutils.py	Tue Mar 06 18:44:03 2012 -0500
@@ -133,6 +133,7 @@
                             if homography != None and obj.getFirstInstant() == frameNum:
                                 obj.projectedPositions = obj.positions.project(homography)
                             draw(img, obj.projectedPositions, cvRed, frameNum-obj.getFirstInstant())
+                            cv2.putText(img, '{0}'.format(obj.num), obj.projectedPositions[frameNum-obj.getFirstInstant()].astuple(), cv2.FONT_HERSHEY_PLAIN, 1, cvRed)
                     cv2.imshow('frame', img)
                     key = cv2.waitKey(50)
                     frameNum += 1
--- a/python/storage.py	Tue Mar 06 18:10:19 2012 -0500
+++ b/python/storage.py	Tue Mar 06 18:44:03 2012 -0500
@@ -8,26 +8,37 @@
 
 
 ngsimUserTypes = {'twowheels':1,
-              'car':2,
-              'truck':3}
+                  'car':2,
+                  'truck':3}
 
-def loadTrajectoriesFromSqlite(filename, objectNumbers = -1):
+def loadTrajectoriesFromSqlite(filename, trajectoryType, objectNumbers = -1):
     '''Loads nObjects or the indices in objectNumbers from the database 
-    TODO: load velocities'''
+    TODO: load velocities (replace table name 'positions' by 'velocities'
+    TODO: load features as well, other ways of averaging trajectories
+    '''
     import sqlite3
 
     connection = sqlite3.connect(filename) # add test if it open
     cursor = connection.cursor()
-    
-    if type(objectNumbers) == int:
-        if objectNumbers == -1:
-            cursor.execute('SELECT * from positions order by trajectory_id, frame_number')
-        else:
-            cursor.execute('SELECT * from positions where trajectory_id between 0 and {0} order by trajectory_id, frame_number'.format(objectNumbers))
-    elif type(objectNumbers) == list:
-        cursor.execute('SELECT * from positions where trajectory_id in ('
-                       +', '.join([str(n) for n in objectNumbers])
-                       +') order by trajectory_id, frame_number')
+
+    if trajectoryType == 'feature':
+        if type(objectNumbers) == int:
+            if objectNumbers == -1:
+                cursor.execute('SELECT * from positions order by trajectory_id, frame_number')
+            else:
+                cursor.execute('SELECT * from positions where trajectory_id between 0 and {0} order by trajectory_id, frame_number'.format(objectNumbers))
+        elif type(objectNumbers) == list:
+            cursor.execute('SELECT * from positions where trajectory_id in ('+', '.join([str(n) for n in objectNumbers])+') order by trajectory_id, frame_number')
+    elif trajectoryType == 'object':
+        if type(objectNumbers) == int:
+            if objectNumbers == -1:
+                cursor.execute('SELECT OF.object_id, P.frame_number, avg(P.x_coordinate), avg(P.y_coordinate) from positions P, objects_features OF where P.trajectory_id = OF.trajectory_id group by object_id, frame_number')
+            else:
+                cursor.execute('SELECT OF.object_id, P.frame_number, avg(P.x_coordinate), avg(P.y_coordinate) from positions P, objects_features OF where P.trajectory_id = OF.trajectory_id and trajectory_id between 0 and {0} group by object_id, frame_number'.format(objectNumbers))
+        elif type(objectNumbers) == list:
+            cursor.execute('SELECT OF.object_id, P.frame_number, avg(P.x_coordinate), avg(P.y_coordinate) from positions P, objects_features OF where P.trajectory_id = OF.trajectory_id and trajectory_id in ('+', '.join([str(n) for n in objectNumbers])+') group by object_id, frame_number')
+    else:
+        print('no trajectory type was chosen')
 
     objId = -1
     obj = None
@@ -48,15 +59,6 @@
     connection.close()
     return objects
 
-def loadObjectsFromSqlite(filename, objectNumbers = -1):
-    '''Loads objects as averages of feature trajectories
-    TODO: load features as well, other ways of averaging trajectories
-    need to provide table name(s) ?'''
-    # elect frame_number, avg(x_coordinate), avg(y_coordinate) from positions where trajectory_id in (select trajectory_id from objects_features where object_id=12) group by frame_number;
-
-
-
-
 def loadTrajectoriesFromNgsimFile(filename, nObjects = -1, sequenceNum = -1):
     '''Reads data from the trajectory data provided by NGSIM project 
     and returns the list of Feature objects'''