Commit ee63cd2e38802c023f7422581106851ce06a98d5
1 parent
28a1f405
minNeighbors was actually rect class count
Showing
1 changed file
with
9 additions
and
7 deletions
openbr/core/opencvutils.cpp
| ... | ... | @@ -448,7 +448,7 @@ void OpenCVUtils::group(QList<Rect> &rects, QList<float> &confidences, float con |
| 448 | 448 | vector<Rect> rrects(nClasses); |
| 449 | 449 | |
| 450 | 450 | // Total number of rects in each class |
| 451 | - vector<int> neighbors(nClasses, 0); | |
| 451 | + vector<int> neighbors(nClasses, -1); | |
| 452 | 452 | vector<float> classConfidence(nClasses, useMax ? -std::numeric_limits<float>::max() : 0); |
| 453 | 453 | |
| 454 | 454 | for (size_t i = 0; i < labels.size(); i++) |
| ... | ... | @@ -465,12 +465,14 @@ void OpenCVUtils::group(QList<Rect> &rects, QList<float> &confidences, float con |
| 465 | 465 | // Find average rectangle for all classes |
| 466 | 466 | for (int i = 0; i < nClasses; i++) |
| 467 | 467 | { |
| 468 | - Rect r = rrects[i]; | |
| 469 | - float s = 1.f/neighbors[i]; | |
| 470 | - rrects[i] = Rect(saturate_cast<int>(r.x*s), | |
| 471 | - saturate_cast<int>(r.y*s), | |
| 472 | - saturate_cast<int>(r.width*s), | |
| 473 | - saturate_cast<int>(r.height*s)); | |
| 468 | + if (neighbors[i] > 0) { | |
| 469 | + Rect r = rrects[i]; | |
| 470 | + float s = 1.f/(neighbors[i]+1); | |
| 471 | + rrects[i] = Rect(saturate_cast<int>(r.x*s), | |
| 472 | + saturate_cast<int>(r.y*s), | |
| 473 | + saturate_cast<int>(r.width*s), | |
| 474 | + saturate_cast<int>(r.height*s)); | |
| 475 | + } | |
| 474 | 476 | } |
| 475 | 477 | |
| 476 | 478 | rects.clear(); | ... | ... |