From 1bc284b14813071d8fb548c2e630751cbf4f4989 Mon Sep 17 00:00:00 2001 From: arashrahmani Date: Wed, 14 Sep 2022 17:08:37 +0430 Subject: [PATCH 1/3] [#REFACTOR] change ++j and ++i expressions to i++ and j++ in calculate distances section of centroidtracker.cpp --- src/centroidtracker.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/centroidtracker.cpp b/src/centroidtracker.cpp index 1b1c2aa..5497ba2 100644 --- a/src/centroidtracker.cpp +++ b/src/centroidtracker.cpp @@ -82,9 +82,9 @@ std::vector>> CentroidTracker::update(vector< // Calculate Distances vector> Distances; - for (int i = 0; i < objectCentroids.size(); ++i) { + for (int i = 0; i < objectCentroids.size(); i++) { vector temp_D; - for (vector>::size_type j = 0; j < inputCentroids.size(); ++j) { + for (vector>::size_type j = 0; j < inputCentroids.size(); j++) { double dist = calcDistance(objectCentroids[i].first, objectCentroids[i].second, inputCentroids[j].first, inputCentroids[j].second); From 97a95feb517c777fc9df09d30fa9b4bedc1bb06b Mon Sep 17 00:00:00 2001 From: arashrahmani Date: Wed, 14 Sep 2022 17:18:27 +0430 Subject: [PATCH 2/3] [#REFACTOR] defining temp_rows variable and defining sortbysec function to sort temp_rows elements according to their second element and put them in sorted order in rows vector (as it is implemented in pyimagesearch python code like this: rows = D.min(axis=1).argsort()) --- src/centroidtracker.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/centroidtracker.cpp b/src/centroidtracker.cpp index 5497ba2..f6c40a8 100644 --- a/src/centroidtracker.cpp +++ b/src/centroidtracker.cpp @@ -35,6 +35,12 @@ vector::size_type findMin(const vector &v, vector::size_typ return (min); } +bool sortbysec(const pair &a, + const pair &b) +{ + return (a.first < b.first); +} + std::vector>> CentroidTracker::update(vector> boxes) { if (boxes.empty()) { auto it = this->disappeared.begin(); @@ -94,15 +100,10 @@ std::vector>> CentroidTracker::update(vector< } // load rows and cols + vector tmp_cols; vector cols; vector rows; - //find indices for cols - for (auto v: Distances) { - auto temp = findMin(v); - cols.push_back(temp); - } - //rows calculation //sort each mat row for rows calculation vector> D_copy; @@ -110,7 +111,6 @@ std::vector>> CentroidTracker::update(vector< sort(v.begin(), v.end()); D_copy.push_back(v); } - // use cols calc to find rows // slice first elem of each column vector> temp_rows; @@ -119,11 +119,19 @@ std::vector>> CentroidTracker::update(vector< temp_rows.push_back(make_pair(i[0], k)); k++; } + sort(temp_rows.begin(), temp_rows.end(), sortbysec); //print sorted indices of temp_rows for (auto const &x : temp_rows) { rows.push_back(x.second); } - + //find indices for cols + for (auto v: Distances) { + auto temp = findMin(v); + tmp_cols.push_back(temp); + } + for (int i=0;i usedRows; set usedCols; From 1e4e11f4458e60f48c58071576d34ab2e2d5c687 Mon Sep 17 00:00:00 2001 From: arashrahmani Date: Wed, 14 Sep 2022 18:50:54 +0430 Subject: [PATCH 3/3] [#REFACTOR] change sortbysec name to sortbyfirst --- src/centroidtracker.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/centroidtracker.cpp b/src/centroidtracker.cpp index f6c40a8..40edc7b 100644 --- a/src/centroidtracker.cpp +++ b/src/centroidtracker.cpp @@ -35,7 +35,7 @@ vector::size_type findMin(const vector &v, vector::size_typ return (min); } -bool sortbysec(const pair &a, +bool sortbyfirst(const pair &a, const pair &b) { return (a.first < b.first); @@ -119,7 +119,7 @@ std::vector>> CentroidTracker::update(vector< temp_rows.push_back(make_pair(i[0], k)); k++; } - sort(temp_rows.begin(), temp_rows.end(), sortbysec); + sort(temp_rows.begin(), temp_rows.end(), sortbyfirst); //print sorted indices of temp_rows for (auto const &x : temp_rows) { rows.push_back(x.second);