changeset 169:5f705809d37a

created groupFeatures function
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sat, 01 Oct 2011 08:28:13 -0400
parents 6ec7f6c61daf
children e99f6c44a655
files c/feature-based-tracking.cpp
diffstat 1 files changed, 40 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/c/feature-based-tracking.cpp	Fri Sep 30 19:27:27 2011 -0400
+++ b/c/feature-based-tracking.cpp	Sat Oct 01 08:28:13 2011 -0400
@@ -237,6 +237,44 @@
   trajectoryDB->disconnect();
 }
 
+void groupFeatures(const KLTFeatureTrackingParameters& params) {
+  cout << "group" << endl;
+    
+  boost::shared_ptr<TrajectoryDBAccessList<Point2f> > trajectoryDB = boost::shared_ptr<TrajectoryDBAccessList<Point2f> >(new TrajectoryDBAccessList<Point2f>());
+  //TODO write generic methods for blob and list versions TrajectoryDBAccess<Point2f>* trajectoryDB = new TrajectoryDBAccessBlob<Point2f>();
+  bool success = trajectoryDB->connect(params.databaseFilename.c_str());
+  vector<boost::shared_ptr<Trajectory<Point2f> > > trajectories;
+  cout << trajectories.size() << endl;
+  success = trajectoryDB->read(trajectories, "positions"); // TODO load velocities as well
+  cout << "Loaded " << trajectories.size() << " trajectories" << endl;
+  // for (int i=0; i<5; ++i) {
+  //   stringstream ss;
+  //   ss << *trajectories[i];
+  //   cout << ss.str() << endl;
+  // }
+
+  // create views for first and last instants for each trajectory
+  // CREATE  VIEW IF NOT EXISTS trajectory_first_instants AS select trajectory_id, min(frame_number) as first_instant from positions group by trajectory_id
+  // CREATE  VIEW IF NOT EXISTS trajectory_last_instants AS select trajectory_id, max(frame_number) as last_instant from positions group by trajectory_id
+  //select trajectory_id from trajectory_first_instants where first_instant = 49
+
+  trajectoryDB->createViewInstants("first");
+  trajectoryDB->createViewInstants("last");
+
+  // main loop
+  // TODO version que l'on peut interrompre ?
+  for (int frameNum = params.frame1; ((frameNum-params.frame1 < params.nFrames) || (params.nFrames < 0)); frameNum++) {
+    vector<int> ids;
+    cout << "frame " << frameNum << " " << trajectoryDB->trajectoryIdStartingAt(ids, frameNum) << endl;
+    BOOST_FOREACH(int i, ids)
+      cout << i << " ";
+    cout << endl;
+  }
+
+  trajectoryDB->endTransaction();
+  trajectoryDB->disconnect();
+ }
+
 int main(int argc, char *argv[]) {
   // BriefDescriptorExtractor brief(32);
   // const int DESIRED_FTRS = 500;
@@ -247,43 +285,8 @@
 
   if (params.trackFeatures)
     trackFeatures(params);
-  else if (params.groupFeatures) {
-    cout << "group" << endl;
-    
-    boost::shared_ptr<TrajectoryDBAccessList<Point2f> > trajectoryDB = boost::shared_ptr<TrajectoryDBAccessList<Point2f> >(new TrajectoryDBAccessList<Point2f>());
-    //TODO write generic methods for blob and list versions TrajectoryDBAccess<Point2f>* trajectoryDB = new TrajectoryDBAccessBlob<Point2f>();
-    bool success = trajectoryDB->connect(params.databaseFilename.c_str());
-    vector<boost::shared_ptr<Trajectory<Point2f> > > trajectories;
-    cout << trajectories.size() << endl;
-    success = trajectoryDB->read(trajectories, "positions");
-    cout << trajectories.size() << endl;
-    for (int i=0; i<5; ++i) {
-      stringstream ss;
-      ss << *trajectories[i];
-      cout << ss.str() << endl;
-    }
-
-    // create views for first and last instants for each trajectory
-    // CREATE  VIEW IF NOT EXISTS trajectory_first_instants AS select trajectory_id, min(frame_number) as first_instant from positions group by trajectory_id
-    // CREATE  VIEW IF NOT EXISTS trajectory_last_instants AS select trajectory_id, max(frame_number) as last_instant from positions group by trajectory_id
-    //select trajectory_id from trajectory_first_instants where first_instant = 49
-
-    trajectoryDB->createViewInstants("first");
-    trajectoryDB->createViewInstants("last");
-
-    // main loop
-    // TODO version que l'on peut interrompre ?
-    for (int frameNum = params.frame1; ((frameNum-params.frame1 < params.nFrames) || (params.nFrames < 0)); frameNum++) {
-      vector<int> ids;
-      cout << "frame " << frameNum << " " << trajectoryDB->trajectoryIdStartingAt(ids, frameNum) << endl;
-      BOOST_FOREACH(int i, ids)
-	cout << i << " ";
-      cout << endl;
-    }
-
-    trajectoryDB->endTransaction();
-    trajectoryDB->disconnect();
-  }
+  else if (params.groupFeatures)
+    groupFeatures(params);
 
   return 0;
 }