Mercurial Hosting > traffic-intelligence
diff c/Motion.cpp @ 147:0089fb29cd26
added projection of points and reprojection for display
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 30 Aug 2011 13:38:31 -0400 |
parents | a3532db00c28 |
children | cde87a07eb58 |
line wrap: on
line diff
--- a/c/Motion.cpp Tue Aug 30 13:04:36 2011 -0400 +++ b/c/Motion.cpp Tue Aug 30 13:38:31 2011 -0400 @@ -9,8 +9,8 @@ using namespace std; using namespace cv; -FeatureTrajectory::FeatureTrajectory(const int& frameNum, const cv::Point2f& p) { - addPoint(frameNum, p); +FeatureTrajectory::FeatureTrajectory(const int& frameNum, const cv::Point2f& p, const Mat& homography) { + addPoint(frameNum, p, homography); } bool FeatureTrajectory::smallDisplacement(const unsigned int& nDisplacements, const float& minTotalFeatureDisplacement) const { @@ -42,8 +42,11 @@ return result; } -void FeatureTrajectory::addPoint(const int& frameNum, const Point2f& p) { - positions.add(frameNum, p); +void FeatureTrajectory::addPoint(const int& frameNum, const Point2f& p, const Mat& homography) { + Point2f pp = p; + if (!homography.empty()) + pp = project(p, homography); + positions.add(frameNum, pp); computeMotionData(frameNum); assert(positions.size() == displacementDistances.size()+1); assert(positions.size() == velocities.size()+1); @@ -62,10 +65,17 @@ #ifdef USE_OPENCV /// \todo add option for anti-aliased drawing, thickness -void FeatureTrajectory::draw(Mat& img, const Scalar& color) const { - Point2f p1 = positions[0]; +void FeatureTrajectory::draw(Mat& img, const Mat& homography, const Scalar& color) const { + Point2f p1, p2; + if (!homography.empty()) + p1 = project(positions[0], homography); + else + p1 = positions[0]; for (unsigned int i=1; i<positions.size(); i++) { - Point2f p2 = positions[i]; + if (!homography.empty()) + p2 = project(positions[i], homography); + else + p2 = positions[i]; line(img, p1, p2, color, 1); p1 = p2; }