Mercurial Hosting > traffic-intelligence
changeset 133:63dd4355b6d1
saving of feature positions in sqlite database
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 17 Aug 2011 22:26:01 -0400 |
parents | 45c64e68053c |
children | a617d0808bbc |
files | c/Feature.cpp c/Makefile c/feature-based-tracking.cpp include/Feature.hpp |
diffstat | 4 files changed, 31 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/c/Feature.cpp Wed Aug 17 19:03:25 2011 -0400 +++ b/c/Feature.cpp Wed Aug 17 22:26:01 2011 -0400 @@ -3,6 +3,8 @@ #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" +#include "src/TrajectoryDBAccessList.h" + using namespace std; using namespace cv; @@ -15,6 +17,11 @@ computeMotionData(frameNum); } +void FeatureTrajectory::write(TrajectoryDBAccess<Point2f>& trajectoryDB) const { + /// \todo save velocities + trajectoryDB.write(positions); +} + #ifdef USE_OPENCV /// \todo add option for anti-aliased drawing, thickness void FeatureTrajectory::draw(Mat& img, const Scalar& color) const {
--- a/c/Makefile Wed Aug 17 19:03:25 2011 -0400 +++ b/c/Makefile Wed Aug 17 22:26:01 2011 -0400 @@ -1,13 +1,15 @@ BUILD_DIR=../bin SCRIPTS_DIR=../scripts +TRAJECTORYMANAGEMENT_DIR=$(HOME)/Research/Code/trajectorymanagementandanalysis/trunk/src/TrajectoryManagementAndAnalysis CXX = g++ -INCLUDE = -I../include -I$(HOME)/Research/Code/trajectorymanagementandanalysis/trunk/src/TrajectoryManagementAndAnalysis +INCLUDE = -I../include -I$(TRAJECTORYMANAGEMENT_DIR) -LIBS = -L../../klt +LIBS = -L../../klt -L$(TRAJECTORYMANAGEMENT_DIR) LDFLAGS = -lm +LDFLAGS += -lTrajectoryManagementAndAnalysis -lsqlite3 #LDFLAGS += -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_unit_test_framework-mt #LDFLAGS += -lfltk
--- a/c/feature-based-tracking.cpp Wed Aug 17 19:03:25 2011 -0400 +++ b/c/feature-based-tracking.cpp Wed Aug 17 22:26:01 2011 -0400 @@ -4,6 +4,7 @@ #include "utils.hpp" #include "src/Trajectory.h" +#include "src/TrajectoryDBAccessList.h" #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" @@ -60,7 +61,7 @@ KLTFeatureTrackingParameters params; params.frame1 = 0; - params.nFrames = -1; + params.nFrames = 50; params.maxNFeatures = 1000; params.featureQuality = 0.1; params.minFeatureDistanceKLT = 3; @@ -108,6 +109,11 @@ return 1; } + // database + TrajectoryDBAccessList<Point2f> trajectoryDB; + trajectoryDB.connect("test.sqlite"); + trajectoryDB.createTable(); + vector<KeyPoint> prevKpts, currKpts; vector<Point2f> prevPts, currPts, newPts; vector<uchar> status; @@ -118,7 +124,8 @@ vector<FeaturePointMatch> featurePointMatches; // TODO structure de donnee paires pointeur trajectory, numero de keypoint - int key = '?'; + int key = '?'; + unsigned int savedFeatureId=0; for (int frameNum = params.frame1; ((params.frame1+frameNum < params.nFrames) || (params.nFrames < 0)) && !::interruptionKey(key); frameNum++) { capture >> frame; cout << capture.get(CV_CAP_PROP_POS_FRAMES) << " " << prevPts.size() << endl; @@ -144,7 +151,9 @@ iter->pointNum = trackedPts.size()-1; iter++; } else { - // save feature + iter->feature->setId(savedFeatureId); + savedFeatureId++; + iter->feature->write(trajectoryDB); iter = featurePointMatches.erase(iter); } } @@ -185,9 +194,10 @@ prevPts = currPts; //prevKpts = currKpts; //currDesc.copyTo(prevDesc); - key = waitKey(0); + key = waitKey(2); } + trajectoryDB.disconnect(); return 0; }
--- a/include/Feature.hpp Wed Aug 17 19:03:25 2011 -0400 +++ b/include/Feature.hpp Wed Aug 17 22:26:01 2011 -0400 @@ -5,6 +5,8 @@ #include <boost/shared_ptr.hpp> +template<typename T> class TrajectoryDBAccess; + /** Class for feature data positions, velocities and other statistics to evaluate their quality before saving. */ @@ -12,8 +14,12 @@ public: FeatureTrajectory(const int& frameNum, const cv::Point2f& p); + void setId(const unsigned int& id) { positions.setId(id);velocities.setId(id);} + void addPoint(const int& frameNum, const cv::Point2f& p); + void write(TrajectoryDBAccess<cv::Point2f>& trajectoryDB) const; + #ifdef USE_OPENCV void draw(cv::Mat& img, const cv::Scalar& color) const; #endif