Commit 267315b9aac46d5448cb2dc588967a27696460aa

Authored by Josh Klontz
1 parent a580a100

enforce CASCADE_FIND_BIGGEST_OBJECT

openbr/plugins/metadata/cascade.cpp
@@ -413,6 +413,17 @@ class CascadeTransform : public MetaTransform @@ -413,6 +413,17 @@ class CascadeTransform : public MetaTransform
413 if (ROCMode) cascade->detectMultiScale(m, rects, rejectLevels, levelWeights, 1.2, minNeighbors, flags | CASCADE_SCALE_IMAGE, Size(minSize, minSize), Size(), true); 413 if (ROCMode) cascade->detectMultiScale(m, rects, rejectLevels, levelWeights, 1.2, minNeighbors, flags | CASCADE_SCALE_IMAGE, Size(minSize, minSize), Size(), true);
414 else cascade->detectMultiScale(m, rects, 1.2, minNeighbors, flags, Size(minSize, minSize)); 414 else cascade->detectMultiScale(m, rects, 1.2, minNeighbors, flags, Size(minSize, minSize));
415 415
  416 + // It appears that flags is ignored for new model files:
  417 + // http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html#cascadeclassifier-detectmultiscale
  418 + if ((flags == CASCADE_FIND_BIGGEST_OBJECT) && (rects.size() > 1)) {
  419 + Rect biggest = rects[0];
  420 + for (size_t j=0; j<rects.size(); j++)
  421 + if (rects[j].area() > biggest.area())
  422 + biggest = rects[j];
  423 + rects.clear();
  424 + rects.push_back(biggest);
  425 + }
  426 +
416 bool empty = false; 427 bool empty = false;
417 if (!enrollAll && rects.empty()) { 428 if (!enrollAll && rects.empty()) {
418 empty = true; 429 empty = true;