diff --git a/rpt/triangulator.cpp b/rpt/triangulator.cpp index 005bcb1..25cbf47 100644 --- a/rpt/triangulator.cpp +++ b/rpt/triangulator.cpp @@ -711,8 +711,8 @@ std::vector>> TriangulatorInternal::triangulate { const auto [i, j, k, l] = indices[e]; - int pid1 = num_persons_sum[i] + k; - int pid2 = num_persons_sum[k] + l; + int pid1 = (i > 0 ? num_persons_sum[i - 1] : 0) + k; + int pid2 = (j > 0 ? num_persons_sum[j - 1] : 0) + l; bool match = false; if (!last_poses_3d.empty()) @@ -1500,8 +1500,6 @@ std::pair>, float> TriangulatorInternal::triang } // Drop lowest scores - size_t drop_k = static_cast(num_joints * 0.2); - const size_t min_k = 3; std::vector valid_scores; for (size_t i = 0; i < num_joints; ++i) { @@ -1511,9 +1509,9 @@ std::pair>, float> TriangulatorInternal::triang } } size_t scores_size = valid_scores.size(); - if (scores_size >= min_k) + size_t drop_k = static_cast(scores_size * 0.2); + if (drop_k > 0) { - drop_k = std::min(drop_k, scores_size - min_k); std::partial_sort(valid_scores.begin(), valid_scores.begin() + drop_k, valid_scores.end()); valid_scores.erase(valid_scores.begin(), valid_scores.begin() + drop_k); }