# HG changeset patch # User Nicolas Saunier # Date 1317472093 14400 # Node ID 5f705809d37a363fe6b9eb5ab84e7bc5faf544a5 # Parent 6ec7f6c61daf175be3b1ea0fed8547811deae50c created groupFeatures function diff -r 6ec7f6c61daf -r 5f705809d37a c/feature-based-tracking.cpp --- 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 > trajectoryDB = boost::shared_ptr >(new TrajectoryDBAccessList()); + //TODO write generic methods for blob and list versions TrajectoryDBAccess* trajectoryDB = new TrajectoryDBAccessBlob(); + bool success = trajectoryDB->connect(params.databaseFilename.c_str()); + vector > > 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 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 > trajectoryDB = boost::shared_ptr >(new TrajectoryDBAccessList()); - //TODO write generic methods for blob and list versions TrajectoryDBAccess* trajectoryDB = new TrajectoryDBAccessBlob(); - bool success = trajectoryDB->connect(params.databaseFilename.c_str()); - vector > > 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 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; }