From a8c8f400f8a1417ba4f66d06959b08adc99e0e60 Mon Sep 17 00:00:00 2001 From: Scott Klum Date: Tue, 5 Jan 2016 10:25:31 -0700 Subject: [PATCH] Added option to use maximum score of grouped rects instead of sum --- openbr/core/opencvutils.cpp | 6 +++--- openbr/core/opencvutils.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openbr/core/opencvutils.cpp b/openbr/core/opencvutils.cpp index d815994..6b7897a 100644 --- a/openbr/core/opencvutils.cpp +++ b/openbr/core/opencvutils.cpp @@ -436,7 +436,7 @@ public: }; // TODO: Make sure case where no confidences are inputted works. -void OpenCVUtils::group(QList &rects, QList &confidences, float confidenceThreshold, int minNeighbors, float epsilon) +void OpenCVUtils::group(QList &rects, QList &confidences, float confidenceThreshold, int minNeighbors, float epsilon, bool useMax) { if (rects.isEmpty()) return; @@ -449,7 +449,7 @@ void OpenCVUtils::group(QList &rects, QList &confidences, float con // Total number of rects in each class vector neighbors(nClasses, 0); - vector classConfidence(nClasses, 0); + vector classConfidence(nClasses, useMax ? -std::numeric_limits::max() : 0); for (size_t i = 0; i < labels.size(); i++) { @@ -459,7 +459,7 @@ void OpenCVUtils::group(QList &rects, QList &confidences, float con rrects[cls].width += rects[i].width; rrects[cls].height += rects[i].height; neighbors[cls]++; - classConfidence[cls] += confidences[i]; + classConfidence[cls] = useMax ? std::max(classConfidence[cls], confidences[i]) : classConfidence[cls]+confidences[i]; } // Find average rectangle for all classes diff --git a/openbr/core/opencvutils.h b/openbr/core/opencvutils.h index ef3cc92..3ca3018 100644 --- a/openbr/core/opencvutils.h +++ b/openbr/core/opencvutils.h @@ -102,7 +102,7 @@ namespace OpenCVUtils float overlap(const QRectF &rect1, const QRectF &rect2); // Misc - void group(QList &rects, QList &confidences, float confidenceThreshold, int minNeighbors, float epsilon); + void group(QList &rects, QList &confidences, float confidenceThreshold, int minNeighbors, float epsilon, bool useMax=false); void pad(const br::Template &src, br::Template &dst, bool padMat, const QList &padding, bool padPoints, bool padRects, int border=0, int value=0); void pad(const br::TemplateList &src, br::TemplateList &dst, bool padMat, const QList &padding, bool padPoints, bool padRects, int border=0, int value=0); void rotate(const br::Template &src, br::Template &dst, int degrees, bool rotateMat=true, bool rotatePoints=true, bool rotateRects=true); -- libgit2 0.21.4