double scaleFactor=1.1,
int minNeighbors=3, int flags=0,
Size minSize=Size(),
+ Size maxSize=Size() );
+
+ CV_WRAP virtual void detectMultiScale( const Mat& image,
+ CV_OUT vector<Rect>& objects,
+ vector<int>& rejectLevels,
+ double scaleFactor=1.1,
+ int minNeighbors=3, int flags=0,
+ Size minSize=Size(),
Size maxSize=Size(),
- bool outputRejectLevels = false,
- vector<int>& rejectLevels = vector<int>(0));
+ bool outputRejectLevels = false );
bool isOldFormatCascade() const;
bool setImage( const Mat& );
protected:
+ //virtual bool detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
+ // int stripSize, int yStep, double factor, vector<Rect>& candidates );
+
virtual bool detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
int stripSize, int yStep, double factor, vector<Rect>& candidates,
- bool outputRejectLevels = false, vector<int>& rejectLevels = vector<int>(0) );
+ vector<int>& rejectLevels, bool outputRejectLevels = false);
protected:
enum { BOOST = 0 };
bool CascadeClassifier::detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
int stripSize, int yStep, double factor, vector<Rect>& candidates,
- bool outputRejectLevels, vector<int>& levels )
+ vector<int>& levels, bool outputRejectLevels )
{
if( !featureEvaluator->setImage( image, data.origWinSize ) )
return false;
return true;
}
+//bool CascadeClassifier::detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,
+// int stripSize, int yStep, double factor, vector<Rect>& candidates )
+//{
+// vector<int> fakeLevels;
+// return detectSingleScale( image, stripCount, processingRectSize,
+// stripSize, yStep, factor, candidates, fakeLevels, false );
+//}
+
bool CascadeClassifier::isOldFormatCascade() const
{
return !oldCascade.empty();
return featureEvaluator->setImage(image, data.origWinSize);
}
-void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& objects,
+void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& objects,
+ vector<int>& rejectLevels,
double scaleFactor, int minNeighbors,
int flags, Size minObjectSize, Size maxObjectSize,
- bool outputRejectLevels, vector<int>& rejectLevels )
+ bool outputRejectLevels )
{
const double GROUP_EPS = 0.2;
#endif
if( !detectSingleScale( scaledImage, stripCount, processingRectSize, stripSize, yStep, factor, candidates,
- outputRejectLevels, rejectLevels ) )
+ rejectLevels, outputRejectLevels ) )
break;
}
groupRectangles( objects, rejectLevels, minNeighbors, GROUP_EPS );
+}
+
+void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& objects,
+ double scaleFactor, int minNeighbors,
+ int flags, Size minObjectSize, Size maxObjectSize)
+{
+ vector<int> fakeLevels;
+ detectMultiScale( image, objects, fakeLevels, scaleFactor,
+ minNeighbors, flags, minObjectSize, maxObjectSize, false );
}
bool CascadeClassifier::Data::read(const FileNode &root)