Commit 267315b9aac46d5448cb2dc588967a27696460aa
1 parent
a580a100
enforce CASCADE_FIND_BIGGEST_OBJECT
Showing
1 changed file
with
11 additions
and
0 deletions
openbr/plugins/metadata/cascade.cpp
| ... | ... | @@ -413,6 +413,17 @@ class CascadeTransform : public MetaTransform |
| 413 | 413 | if (ROCMode) cascade->detectMultiScale(m, rects, rejectLevels, levelWeights, 1.2, minNeighbors, flags | CASCADE_SCALE_IMAGE, Size(minSize, minSize), Size(), true); |
| 414 | 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 | 427 | bool empty = false; |
| 417 | 428 | if (!enrollAll && rects.empty()) { |
| 418 | 429 | empty = true; | ... | ... |