@ -196,8 +196,11 @@ void groupRectangles(std::vector<Rect>& rectList, int groupThreshold, double eps
for ( i = 0 ; i < nclasses ; i + + )
for ( i = 0 ; i < nclasses ; i + + )
{
{
Rect r1 = rrects [ i ] ;
Rect r1 = rrects [ i ] ;
int n1 = levelWeights ? rejectLevels [ i ] : rweights [ i ] ;
int n1 = rweights [ i ] ;
double w1 = rejectWeights [ i ] ;
double w1 = rejectWeights [ i ] ;
int l1 = rejectLevels [ i ] ;
// filter out rectangles which don't have enough similar rectangles
if ( n1 < = groupThreshold )
if ( n1 < = groupThreshold )
continue ;
continue ;
// filter out small face rectangles inside large rectangles
// filter out small face rectangles inside large rectangles
@ -225,7 +228,7 @@ void groupRectangles(std::vector<Rect>& rectList, int groupThreshold, double eps
{
{
rectList . push_back ( r1 ) ;
rectList . push_back ( r1 ) ;
if ( weights )
if ( weights )
weights - > push_back ( n 1) ;
weights - > push_back ( l 1) ;
if ( levelWeights )
if ( levelWeights )
levelWeights - > push_back ( w1 ) ;
levelWeights - > push_back ( w1 ) ;
}
}
@ -988,7 +991,7 @@ public:
{
{
if ( result = = 1 )
if ( result = = 1 )
result = - ( int ) classifier - > data . stages . size ( ) ;
result = - ( int ) classifier - > data . stages . size ( ) ;
if ( classifier - > data . stages . size ( ) + result < 4 )
if ( classifier - > data . stages . size ( ) + result = = 0 )
{
{
mtx - > lock ( ) ;
mtx - > lock ( ) ;
rectangles - > push_back ( Rect ( cvRound ( x * scalingFactor ) , cvRound ( y * scalingFactor ) , winSize . width , winSize . height ) ) ;
rectangles - > push_back ( Rect ( cvRound ( x * scalingFactor ) , cvRound ( y * scalingFactor ) , winSize . width , winSize . height ) ) ;