changeset 129:4742b2b6d851

created basic feature saving code
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 17 Aug 2011 17:14:00 -0400
parents 536510f60854
children 2a6e7a9a5c53
files c/Feature.cpp c/Makefile include/Feature.hpp
diffstat 3 files changed, 42 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/c/Feature.cpp	Wed Aug 17 17:14:00 2011 -0400
@@ -0,0 +1,30 @@
+#include "Feature.hpp"
+
+#include "opencv2/core/core.hpp"
+
+using namespace std;
+using namespace cv;
+
+void FeatureTrajectory::addPoint(const int& frameNum, const Point2f& p) {
+  positions.add(frameNum, p);
+  computeMotionData(frameNum);
+}
+
+// protected
+
+void FeatureTrajectory::computeMotionData(const int& frameNum) {
+  unsigned int nPositions = positions.size();
+  if (nPositions >= 3) {
+    Point2f displacement = positions[nPositions-1] - positions[nPositions-2];
+    velocities.add(frameNum, displacement);
+    float dist = norm(displacement);
+    displacementDistances.push_back(dist);
+  } else if (nPositions == 2) {
+    Point2f displacement = positions[1] - positions[0];
+    velocities.add(frameNum-1, displacement);
+    velocities.add(frameNum, displacement);
+    float dist = norm(displacement);
+    displacementDistances.push_back(dist);
+    displacementDistances.push_back(dist);
+  }
+}
--- a/c/Makefile	Wed Aug 17 02:44:28 2011 -0400
+++ b/c/Makefile	Wed Aug 17 17:14:00 2011 -0400
@@ -62,7 +62,7 @@
 test:
 	echo "coucou $(HOME)"
 
-feature-based-tracking: feature-based-tracking.o cvutils.o
+feature-based-tracking: feature-based-tracking.o cvutils.o Feature.o
 	$(CXX) $(CFLAGS) $(LIBS) $^ -o $(BUILD_DIR)/$@ $(LDFLAGS)
 
 track-features.o: track-features.cpp
--- a/include/Feature.hpp	Wed Aug 17 02:44:28 2011 -0400
+++ b/include/Feature.hpp	Wed Aug 17 17:14:00 2011 -0400
@@ -1,16 +1,22 @@
 #ifndef FEATURE_HPP
 #define FEATURE_HPP
 
-#include "opencv/cv.h"
+#include "opencv2/core/core.hpp"
 
 #include "src/Trajectory.h"
 
-class Feature {
+class FeatureTrajectory {
+
+  void addPoint(const int& frameNum, const cv::Point2f& p);
 
 protected:
-  int id;
-  int firstInstant;
-  Trajectory<cv::Point2f> trajectory;
+  Trajectory<cv::Point2f> positions;
+  Trajectory<cv::Point2f> velocities;
+  
+  std::vector<float> displacementDistances;
+
+  void computeMotionData(const int& frameNum);
+
 };
 
 #endif