changeset 815:daa992ac6b44

correcting bug with coordinates in mask
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sat, 18 Jun 2016 14:25:59 -0400
parents ef8795dba5ed
children 0b03218cd008
files c/feature-based-tracking.cpp
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/c/feature-based-tracking.cpp	Fri Jun 10 17:46:54 2016 -0400
+++ b/c/feature-based-tracking.cpp	Sat Jun 18 14:25:59 2016 -0400
@@ -182,8 +182,13 @@
       std::vector<FeaturePointMatch>::iterator iter = featurePointMatches.begin();
       while (iter != featurePointMatches.end()) {
 	bool deleteFeature = false;
-	  
-	if (status[iter->pointNum] && (mask.at<uchar>(static_cast<int>(round(currPts[iter->pointNum].y)), static_cast<int>(round(currPts[iter->pointNum].x))) != 0)) {
+	
+	int currPtX = static_cast<int>(floor(currPts[iter->pointNum].x));
+	int currPtY = static_cast<int>(floor(currPts[iter->pointNum].y));
+	if ((status[iter->pointNum] =!0) && 
+	    (currPtX >= 0) && (currPtX < videoSize.width) && 
+	    (currPtY >= 0) && (currPtY < videoSize.height) && 
+	    (mask.at<uchar>(currPtY, currPtX) != 0)) {
 	  iter->feature->addPoint(frameNum, currPts[iter->pointNum], homography);
 	  
 	  deleteFeature = iter->feature->isDisplacementSmall(params.nDisplacements, minTotalFeatureDisplacement)