diff c/feature-based-tracking.cpp @ 142:a3532db00c28

added code to write velocities
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 24 Aug 2011 02:12:06 -0400
parents 6f10a227486c
children b32947b002da
line wrap: on
line diff
--- a/c/feature-based-tracking.cpp	Wed Aug 24 01:34:27 2011 -0400
+++ b/c/feature-based-tracking.cpp	Wed Aug 24 02:12:06 2011 -0400
@@ -52,9 +52,9 @@
     feature(_feature), pointNum(_pointNum) {}
 };
 
-inline void saveFeatures(vector<FeatureTrajectoryPtr>& features, TrajectoryDBAccess<Point2f>& db, const unsigned int& minNFeatures = 0) {
+inline void saveFeatures(vector<FeatureTrajectoryPtr>& features, TrajectoryDBAccess<Point2f>& db, const string& positionsTableName, const string& velocitiesTableName, const unsigned int& minNFeatures = 0) {
   if (features.size() >= minNFeatures) {
-    BOOST_FOREACH(FeatureTrajectoryPtr f, features) f->write(db);
+    BOOST_FOREACH(FeatureTrajectoryPtr f, features) f->write(db, positionsTableName, velocitiesTableName);
     features.clear();
   }
 }
@@ -120,7 +120,9 @@
   boost::shared_ptr<TrajectoryDBAccess<Point2f> > trajectoryDB = boost::shared_ptr<TrajectoryDBAccess<Point2f> >(new TrajectoryDBAccessList<Point2f>());
   //TrajectoryDBAccess<Point2f>* trajectoryDB = new TrajectoryDBAccessBlob<Point2f>();
   trajectoryDB->connect(params.databaseFilename.c_str());
-  trajectoryDB->createTable();
+  trajectoryDB->createTable("positions");
+  trajectoryDB->createTable("velocities");
+  trajectoryDB->beginTransaction();
 
   vector<KeyPoint> prevKpts, currKpts;
   vector<Point2f> prevPts, currPts, newPts;
@@ -181,7 +183,7 @@
 	}
 	currPts = trackedPts;
 	assert(currPts.size() == featurePointMatches.size());
-	saveFeatures(lostFeatures, *trajectoryDB);
+	saveFeatures(lostFeatures, *trajectoryDB, "positions", "velocities");
 	
 	if (params.display) {
 	  BOOST_FOREACH(FeaturePointMatch fp, featurePointMatches)
@@ -223,6 +225,7 @@
       //currDesc.copyTo(prevDesc);
     }  
   
+  trajectoryDB->endTransaction();
   trajectoryDB->disconnect();
   return 0;
 }