diff --git a/openbr/plugins/metadata/cascade.cpp b/openbr/plugins/metadata/cascade.cpp index 27e9a32..8dd9a54 100644 --- a/openbr/plugins/metadata/cascade.cpp +++ b/openbr/plugins/metadata/cascade.cpp @@ -202,7 +202,8 @@ class CascadeTransform : public MetaTransform Q_PROPERTY(int minSize READ get_minSize WRITE set_minSize RESET reset_minSize STORED false) Q_PROPERTY(int minNeighbors READ get_minNeighbors WRITE set_minNeighbors RESET reset_minNeighbors STORED false) Q_PROPERTY(bool ROCMode READ get_ROCMode WRITE set_ROCMode RESET reset_ROCMode STORED false) - + Q_PROPERTY(float scaleFactor READ get_scaleFactor WRITE set_scaleFactor RESET reset_scaleFactor STORED false) + // Training parameters Q_PROPERTY(int numStages READ get_numStages WRITE set_numStages RESET reset_numStages STORED false) Q_PROPERTY(int w READ get_w WRITE set_w RESET reset_w STORED false) @@ -227,7 +228,8 @@ class CascadeTransform : public MetaTransform BR_PROPERTY(int, minSize, 64) BR_PROPERTY(int, minNeighbors, 5) BR_PROPERTY(bool, ROCMode, false) - + BR_PROPERTY(float, scaleFactor, 1.2) + // Training parameters - Default values provided trigger OpenCV defaults BR_PROPERTY(int, numStages, -1) BR_PROPERTY(int, w, -1) @@ -410,8 +412,8 @@ class CascadeTransform : public MetaTransform std::vector rects; std::vector rejectLevels; std::vector levelWeights; - if (ROCMode) cascade->detectMultiScale(m, rects, rejectLevels, levelWeights, 1.2, minNeighbors, flags | CASCADE_SCALE_IMAGE, Size(minSize, minSize), Size(), true); - else cascade->detectMultiScale(m, rects, 1.2, minNeighbors, flags, Size(minSize, minSize)); + if (ROCMode) cascade->detectMultiScale(m, rects, rejectLevels, levelWeights, scaleFactor, minNeighbors, flags | CASCADE_SCALE_IMAGE, Size(minSize, minSize), Size(), true); + else cascade->detectMultiScale(m, rects, scaleFactor, minNeighbors, flags, Size(minSize, minSize)); // It appears that flags is ignored for new model files: // http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html#cascadeclassifier-detectmultiscale @@ -437,7 +439,7 @@ class CascadeTransform : public MetaTransform u.file.set("Confidence",-std::numeric_limits::max()); } else if (rejectLevels.size() > j) u.file.set("Confidence", rejectLevels[j]*levelWeights[j]); - else + else u.file.set("Confidence", rects[j].area()); const QRectF rect = OpenCVUtils::fromRect(rects[j]); u.file.appendRect(rect);