# HG changeset patch # User Nicolas Saunier # Date 1466274359 14400 # Node ID daa992ac6b44e5d467a04c258fa5956b51caf0eb # Parent ef8795dba5edfe283bbf3df6810d37fdc7c777de correcting bug with coordinates in mask diff -r ef8795dba5ed -r daa992ac6b44 c/feature-based-tracking.cpp --- 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::iterator iter = featurePointMatches.begin(); while (iter != featurePointMatches.end()) { bool deleteFeature = false; - - if (status[iter->pointNum] && (mask.at(static_cast(round(currPts[iter->pointNum].y)), static_cast(round(currPts[iter->pointNum].x))) != 0)) { + + int currPtX = static_cast(floor(currPts[iter->pointNum].x)); + int currPtY = static_cast(floor(currPts[iter->pointNum].y)); + if ((status[iter->pointNum] =!0) && + (currPtX >= 0) && (currPtX < videoSize.width) && + (currPtY >= 0) && (currPtY < videoSize.height) && + (mask.at(currPtY, currPtX) != 0)) { iter->feature->addPoint(frameNum, currPts[iter->pointNum], homography); deleteFeature = iter->feature->isDisplacementSmall(params.nDisplacements, minTotalFeatureDisplacement)