# HG changeset patch # User Nicolas Saunier # Date 1314166326 14400 # Node ID a3532db00c289357023777f018c4a605b92c452a # Parent 6f10a227486c33d3f2f3d8b41328fac27cfcd603 added code to write velocities diff -r 6f10a227486c -r a3532db00c28 c/Motion.cpp --- 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& trajectoryDB) const { - /// \todo save velocities - trajectoryDB.write(positions); +void FeatureTrajectory::write(TrajectoryDBAccess& trajectoryDB, const string& positionsTableName, const string& velocitiesTableName) const { + trajectoryDB.write(positions, positionsTableName); + trajectoryDB.write(velocities, velocitiesTableName); } #ifdef USE_OPENCV diff -r 6f10a227486c -r a3532db00c28 c/feature-based-tracking.cpp --- 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& features, TrajectoryDBAccess& db, const unsigned int& minNFeatures = 0) { +inline void saveFeatures(vector& features, TrajectoryDBAccess& 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 > trajectoryDB = boost::shared_ptr >(new TrajectoryDBAccessList()); //TrajectoryDBAccess* trajectoryDB = new TrajectoryDBAccessBlob(); trajectoryDB->connect(params.databaseFilename.c_str()); - trajectoryDB->createTable(); + trajectoryDB->createTable("positions"); + trajectoryDB->createTable("velocities"); + trajectoryDB->beginTransaction(); vector prevKpts, currKpts; vector 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; } diff -r 6f10a227486c -r a3532db00c28 include/Motion.hpp --- 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& trajectoryDB) const; + void write(TrajectoryDBAccess& trajectoryDB, const string& positionsTableName, const string& velocitiesTableName) const; #ifdef USE_OPENCV void draw(cv::Mat& img, const cv::Scalar& color) const;