diff --git a/include/centroidtracker.h b/include/centroidtracker.h index 4621606..40dc18a 100644 --- a/include/centroidtracker.h +++ b/include/centroidtracker.h @@ -16,7 +16,7 @@ Created by pratheek on 2019-11-27. class CentroidTracker { public: - explicit CentroidTracker(int maxDisappeared); + explicit CentroidTracker(int maxDisappeared, int maxDistance); void register_Object(int cX, int cY); @@ -29,7 +29,7 @@ class CentroidTracker { std::map>> path_keeper; private: int maxDisappeared; - + int maxDistance; int nextObjectID; static double calcDistance(double x1, double y1, double x2, double y2); diff --git a/src/centroidtracker.cpp b/src/centroidtracker.cpp index 1b1c2aa..f64a066 100644 --- a/src/centroidtracker.cpp +++ b/src/centroidtracker.cpp @@ -6,9 +6,10 @@ Created by pratheek on 2019-11-27. using namespace std; -CentroidTracker::CentroidTracker(int maxDisappeared) { +CentroidTracker::CentroidTracker(int maxDisappeared, int maxDistance) { this->nextObjectID = 0; this->maxDisappeared = maxDisappeared; + this->maxDistance = maxDistance; } double CentroidTracker::calcDistance(double x1, double y1, double x2, double y2) { @@ -131,6 +132,10 @@ std::vector>> CentroidTracker::update(vector< for (int i = 0; i < rows.size(); i++) { //if we have already examined either the row or column value before, ignore it if (usedRows.count(rows[i]) || usedCols.count(cols[i])) { continue; } + + // Added maxDistance logic here + if (Distances[rows[i]][cols[i]] > this->maxDistance) { continue; } + //otherwise, grab the object ID for the current row, set its new centroid, // and reset the disappeared counter int objectID = objectIDs[rows[i]]; diff --git a/src/main.cpp b/src/main.cpp index d514d8d..c82b0da 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,7 +9,7 @@ using namespace std; int main() { std::cout << "Hello, Tracker!" << std::endl; - auto centroidTracker = new CentroidTracker(20); + auto centroidTracker = new CentroidTracker(20, 50); VideoCapture cap(0); // VideoCapture cap("../../test2.mp4");