diff --git a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp index 126e6210c..49d42377e 100644 --- a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp +++ b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp @@ -474,6 +474,7 @@ public: { public: virtual cv::Mat generateMask(const cv::Mat& src)=0; + virtual void initializeMask(const cv::Mat& src) {}; }; void setMaskGenerator(Ptr maskGenerator); Ptr getMaskGenerator(); diff --git a/modules/objdetect/src/cascadedetect.cpp b/modules/objdetect/src/cascadedetect.cpp index 5d67764c7..6c90e7def 100644 --- a/modules/objdetect/src/cascadedetect.cpp +++ b/modules/objdetect/src/cascadedetect.cpp @@ -1029,6 +1029,11 @@ void CascadeClassifier::detectMultiScale( const Mat& image, vector& object objects.clear(); + if (!maskGenerator.empty()) { + maskGenerator->initializeMask(image); + } + + if( maxObjectSize.height == 0 || maxObjectSize.width == 0 ) maxObjectSize = image.size();