changeset 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 436b87d4b992
files c/Motion.cpp c/feature-based-tracking.cpp include/Motion.hpp
diffstat 3 files changed, 11 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/c/Motion.cpp	Wed Aug 24 01:34:27 2011 -0400
+++ b/c/Motion.cpp	Wed Aug 24 02:12:06 2011 -0400
@@ -55,9 +55,9 @@
   displacementDistances.pop_back();
 }
 
-void FeatureTrajectory::write(TrajectoryDBAccess<Point2f>& trajectoryDB) const {
-  /// \todo save velocities
-  trajectoryDB.write(positions);
+void FeatureTrajectory::write(TrajectoryDBAccess<Point2f>& trajectoryDB, const string& positionsTableName, const string& velocitiesTableName) const {
+  trajectoryDB.write(positions, positionsTableName);
+  trajectoryDB.write(velocities, velocitiesTableName);
 }
 
 #ifdef USE_OPENCV
--- 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;
 }
--- a/include/Motion.hpp	Wed Aug 24 01:34:27 2011 -0400
+++ b/include/Motion.hpp	Wed Aug 24 02:12:06 2011 -0400
@@ -28,7 +28,7 @@
 
   void shorten(void);
 
-  void write(TrajectoryDBAccess<cv::Point2f>& trajectoryDB) const;
+  void write(TrajectoryDBAccess<cv::Point2f>& trajectoryDB, const string& positionsTableName, const string& velocitiesTableName) const;
 
 #ifdef USE_OPENCV
   void draw(cv::Mat& img, const cv::Scalar& color) const;