Commit ee63cd2e38802c023f7422581106851ce06a98d5

Authored by Scott Klum
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,7 +448,7 @@ void OpenCVUtils::group(QList<Rect> &rects, QList<float> &confidences, float con
448 vector<Rect> rrects(nClasses); 448 vector<Rect> rrects(nClasses);
449 449
450 // Total number of rects in each class 450 // Total number of rects in each class
451 - vector<int> neighbors(nClasses, 0); 451 + vector<int> neighbors(nClasses, -1);
452 vector<float> classConfidence(nClasses, useMax ? -std::numeric_limits<float>::max() : 0); 452 vector<float> classConfidence(nClasses, useMax ? -std::numeric_limits<float>::max() : 0);
453 453
454 for (size_t i = 0; i < labels.size(); i++) 454 for (size_t i = 0; i < labels.size(); i++)
@@ -465,12 +465,14 @@ void OpenCVUtils::group(QList&lt;Rect&gt; &amp;rects, QList&lt;float&gt; &amp;confidences, float con @@ -465,12 +465,14 @@ void OpenCVUtils::group(QList&lt;Rect&gt; &amp;rects, QList&lt;float&gt; &amp;confidences, float con
465 // Find average rectangle for all classes 465 // Find average rectangle for all classes
466 for (int i = 0; i < nClasses; i++) 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 rects.clear(); 478 rects.clear();