@ -108,7 +108,7 @@ CvBackgroundData* cvbgdata = NULL;
/*
* get sum image offsets for < rect > corner points
* get sum image offsets for < rect > corner points
* step - row step ( measured in image pixels ! ) of sum image
*/
# define CV_SUM_OFFSETS( p0, p1, p2, p3, rect, step ) \
@ -122,7 +122,7 @@ CvBackgroundData* cvbgdata = NULL;
( p3 ) = ( rect ) . x + ( rect ) . width + ( step ) * ( ( rect ) . y + ( rect ) . height ) ;
/*
* get tilted image offsets for < rect > corner points
* get tilted image offsets for < rect > corner points
* step - row step ( measured in image pixels ! ) of tilted image
*/
# define CV_TILTED_OFFSETS( p0, p1, p2, p3, rect, step ) \
@ -154,7 +154,7 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
{
CvIntHaarFeatures * features = NULL ;
CvTHaarFeature haarFeature ;
CvMemStorage * storage = NULL ;
CvSeq * seq = NULL ;
CvSeqWriter writer ;
@ -172,7 +172,7 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
float factor = 1.0F ;
factor = ( ( float ) winsize . width ) * winsize . height / ( 24 * 24 ) ;
#if 0
#if 0
s0 = ( int ) ( s0 * factor ) ;
s1 = ( int ) ( s1 * factor ) ;
s2 = ( int ) ( s2 * factor ) ;
@ -252,7 +252,7 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
CV_WRITE_SEQ_ELEM ( haarFeature , writer ) ;
}
}
// haar_y4
if ( ( x + dx < = winsize . width ) & & ( y + dy * 4 < = winsize . height ) ) {
if ( dx * 4 * dy < s0 ) continue ;
@ -277,7 +277,7 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
}
}
if ( mode ! = 0 /*BASIC*/ ) {
if ( mode ! = 0 /*BASIC*/ ) {
// point
if ( ( x + dx * 3 < = winsize . width ) & & ( y + dy * 3 < = winsize . height ) ) {
if ( dx * 9 * dy < s0 ) continue ;
@ -289,12 +289,12 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
}
}
}
if ( mode = = 2 /*ALL*/ ) {
if ( mode = = 2 /*ALL*/ ) {
// tilted haar_x2 (x, y, w, h, b, weight)
if ( ( x + 2 * dx < = winsize . width ) & & ( y + 2 * dx + dy < = winsize . height ) & & ( x - dy > = 0 ) ) {
if ( dx * 2 * dy < s1 ) continue ;
if ( ! symmetric | | ( x < = ( winsize . width / 2 ) ) ) {
haarFeature = cvHaarFeature ( " tilted_haar_x2 " ,
x , y , dx * 2 , dy , - 1 ,
@ -302,11 +302,11 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
CV_WRITE_SEQ_ELEM ( haarFeature , writer ) ;
}
}
// tilted haar_y2 (x, y, w, h, b, weight)
if ( ( x + dx < = winsize . width ) & & ( y + dx + 2 * dy < = winsize . height ) & & ( x - 2 * dy > = 0 ) ) {
if ( dx * 2 * dy < s1 ) continue ;
if ( ! symmetric | | ( x < = ( winsize . width / 2 ) ) ) {
haarFeature = cvHaarFeature ( " tilted_haar_y2 " ,
x , y , dx , 2 * dy , - 1 ,
@ -314,11 +314,11 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
CV_WRITE_SEQ_ELEM ( haarFeature , writer ) ;
}
}
// tilted haar_x3 (x, y, w, h, b, weight)
if ( ( x + 3 * dx < = winsize . width ) & & ( y + 3 * dx + dy < = winsize . height ) & & ( x - dy > = 0 ) ) {
if ( dx * 3 * dy < s2 ) continue ;
if ( ! symmetric | | ( x < = ( winsize . width / 2 ) ) ) {
haarFeature = cvHaarFeature ( " tilted_haar_x3 " ,
x , y , dx * 3 , dy , - 1 ,
@ -326,11 +326,11 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
CV_WRITE_SEQ_ELEM ( haarFeature , writer ) ;
}
}
// tilted haar_y3 (x, y, w, h, b, weight)
if ( ( x + dx < = winsize . width ) & & ( y + dx + 3 * dy < = winsize . height ) & & ( x - 3 * dy > = 0 ) ) {
if ( dx * 3 * dy < s2 ) continue ;
if ( ! symmetric | | ( x < = ( winsize . width / 2 ) ) ) {
haarFeature = cvHaarFeature ( " tilted_haar_y3 " ,
x , y , dx , 3 * dy , - 1 ,
@ -338,12 +338,12 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
CV_WRITE_SEQ_ELEM ( haarFeature , writer ) ;
}
}
// tilted haar_x4 (x, y, w, h, b, weight)
if ( ( x + 4 * dx < = winsize . width ) & & ( y + 4 * dx + dy < = winsize . height ) & & ( x - dy > = 0 ) ) {
if ( dx * 4 * dy < s3 ) continue ;
if ( ! symmetric | | ( x < = ( winsize . width / 2 ) ) ) {
haarFeature = cvHaarFeature ( " tilted_haar_x4 " ,
@ -353,11 +353,11 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
CV_WRITE_SEQ_ELEM ( haarFeature , writer ) ;
}
}
// tilted haar_y4 (x, y, w, h, b, weight)
if ( ( x + dx < = winsize . width ) & & ( y + dx + 4 * dy < = winsize . height ) & & ( x - 4 * dy > = 0 ) ) {
if ( dx * 4 * dy < s3 ) continue ;
if ( ! symmetric | | ( x < = ( winsize . width / 2 ) ) ) {
haarFeature = cvHaarFeature ( " tilted_haar_y4 " ,
x , y , dx , 4 * dy , - 1 ,
@ -365,10 +365,10 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
CV_WRITE_SEQ_ELEM ( haarFeature , writer ) ;
}
}
/*
// tilted point
if ( ( x + dx * 3 < = winsize . width - 1 ) & & ( y + dy * 3 < = winsize . height - 1 ) & & ( x - 3 * dy > = 0 ) ) {
if ( dx * 9 * dy < 36 ) continue ;
@ -395,10 +395,10 @@ CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,
features - > winsize = winsize ;
cvCvtSeqToArray ( seq , ( CvArr * ) features - > feature ) ;
cvReleaseMemStorage ( & storage ) ;
icvConvertToFastHaarFeature ( features - > feature , features - > fastfeature ,
features - > count , ( winsize . width + 1 ) ) ;
return features ;
}
@ -438,7 +438,7 @@ void icvConvertToFastHaarFeature( CvTHaarFeature* haarFeature,
fastHaarFeature [ i ] . rect [ j ] . p3 ,
haarFeature [ i ] . rect [ j ] . r , step )
}
}
else
{
@ -469,15 +469,15 @@ static
CvHaarTrainigData * icvCreateHaarTrainingData ( CvSize winsize , int maxnumsamples )
{
CvHaarTrainigData * data ;
CV_FUNCNAME ( " icvCreateHaarTrainingData " ) ;
__BEGIN__ ;
data = NULL ;
uchar * ptr = NULL ;
size_t datasize = 0 ;
datasize = sizeof ( CvHaarTrainigData ) +
/* sum and tilted */
( 2 * ( winsize . width + 1 ) * ( winsize . height + 1 ) * sizeof ( sum_type ) +
@ -548,7 +548,7 @@ void icvGetTrainingDataCallback( CvMat* mat, CvMat* sampleIdx, CvMat*,
int j = 0 ;
float val = 0.0F ;
float normfactor = 0.0F ;
CvHaarTrainingData * training_data ;
CvIntHaarFeatures * haar_features ;
@ -639,7 +639,7 @@ void icvGetTrainingDataCallback( CvMat* mat, CvMat* sampleIdx, CvMat*,
#if 0 /*def CV_VERBOSE*/
if ( first % 5000 = = 0 )
{
fprintf ( stderr , " %3d%% \r " , ( int ) ( 100.0 * first /
fprintf ( stderr , " %3d%% \r " , ( int ) ( 100.0 * first /
haar_features - > count ) ) ;
fflush ( stderr ) ;
}
@ -692,7 +692,7 @@ void icvPrecalculate( CvHaarTrainingData* data, CvIntHaarFeatures* haarFeatures,
t_data = * data - > valcache ;
t_idx = * data - > idxcache ;
t_portion = MIN ( portion , ( numprecalculated - first ) ) ;
/* indices */
t_idx . rows = t_portion ;
t_idx . data . ptr = data - > idxcache - > data . ptr + first * ( ( size_t ) t_idx . step ) ;
@ -766,7 +766,7 @@ void icvSplitIndicesCallback( int compidx, float threshold,
{
if ( cvEvalFastHaarFeature ( fastfeature ,
( sum_type * ) ( data - > sum . data . ptr + i * data - > sum . step ) ,
( sum_type * ) ( data - > tilted . data . ptr + i * data - > tilted . step ) )
( sum_type * ) ( data - > tilted . data . ptr + i * data - > tilted . step ) )
< threshold * data - > normfactor . data . fl [ i ] )
{
( * left ) - > data . fl [ ( * left ) - > cols + + ] = ( float ) i ;
@ -792,7 +792,7 @@ void icvSplitIndicesCallback( int compidx, float threshold,
index = ( int ) * ( ( float * ) ( idxdata + i * idxstep ) ) ;
if ( cvEvalFastHaarFeature ( fastfeature ,
( sum_type * ) ( data - > sum . data . ptr + index * data - > sum . step ) ,
( sum_type * ) ( data - > tilted . data . ptr + index * data - > tilted . step ) )
( sum_type * ) ( data - > tilted . data . ptr + index * data - > tilted . step ) )
< threshold * data - > normfactor . data . fl [ index ] )
{
( * left ) - > data . fl [ ( * left ) - > cols + + ] = ( float ) index ;
@ -858,7 +858,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
float sum_stage = 0.0F ;
float threshold = 0.0F ;
float falsealarm = 0.0F ;
//CvMat* sampleIdx = NULL;
CvMat * trimmedIdx ;
//float* idxdata = NULL;
@ -871,7 +871,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
int idx ;
int numsamples ;
int numtrimmed ;
CvCARTHaarClassifier * classifier ;
CvSeq * seq = NULL ;
CvMemStorage * storage = NULL ;
@ -885,7 +885,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
printf ( " | N |%%SMP|F| ST.THR | HR | FA | EXP. ERR| \n " ) ;
printf ( " +----+----+-+---------+---------+---------+---------+ \n " ) ;
# endif /* CV_VERBOSE */
n = haarFeatures - > count ;
m = data - > sum . rows ;
numsamples = ( sampleIdx ) ? MAX ( sampleIdx - > rows , sampleIdx - > cols ) : m ;
@ -909,7 +909,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
trainParams . userdata = & userdata ;
eval = cvMat ( 1 , m , CV_32FC1 , cvAlloc ( sizeof ( float ) * m ) ) ;
storage = cvCreateMemStorage ( ) ;
seq = cvCreateSeq ( 0 , sizeof ( * seq ) , sizeof ( classifier ) , storage ) ;
@ -919,7 +919,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
num_splits = 0 ;
sumalpha = 0.0F ;
do
{
{
# ifdef CV_VERBOSE
int v_wt = 0 ;
@ -947,12 +947,12 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
num_splits + = classifier - > count ;
cart - > release ( ( CvClassifier * * ) & cart ) ;
if ( symmetric & & ( seq - > total % 2 ) )
{
float normfactor = 0.0F ;
CvStumpClassifier * stump ;
/* flip haar features */
for ( i = 0 ; i < classifier - > count ; i + + )
{
@ -961,9 +961,9 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
for ( j = 0 ; j < CV_HAAR_FEATURE_MAX & &
classifier - > feature [ i ] . rect [ j ] . weight ! = 0.0F ; j + + )
{
classifier - > feature [ i ] . rect [ j ] . r . x = data - > winsize . width -
classifier - > feature [ i ] . rect [ j ] . r . x = data - > winsize . width -
classifier - > feature [ i ] . rect [ j ] . r . x -
classifier - > feature [ i ] . rect [ j ] . r . width ;
classifier - > feature [ i ] . rect [ j ] . r . width ;
}
}
else
@ -975,7 +975,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
for ( j = 0 ; j < CV_HAAR_FEATURE_MAX & &
classifier - > feature [ i ] . rect [ j ] . weight ! = 0.0F ; j + + )
{
classifier - > feature [ i ] . rect [ j ] . r . x = data - > winsize . width -
classifier - > feature [ i ] . rect [ j ] . r . x = data - > winsize . width -
classifier - > feature [ i ] . rect [ j ] . r . x ;
CV_SWAP ( classifier - > feature [ i ] . rect [ j ] . r . width ,
classifier - > feature [ i ] . rect [ j ] . r . height , tmp ) ;
@ -1010,7 +1010,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
weakTrainVals , 0 , 0 , 0 , trimmedIdx ,
& ( data - > weights ) ,
trainParams . stumpTrainParams ) ;
classifier - > threshold [ i ] = stump - > threshold ;
if ( classifier - > left [ i ] < = 0 )
{
@ -1021,8 +1021,8 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
classifier - > val [ - classifier - > right [ i ] ] = stump - > right ;
}
stump - > release ( ( CvClassifier * * ) & stump ) ;
stump - > release ( ( CvClassifier * * ) & stump ) ;
}
stumpTrainParams . getTrainData = icvGetTrainingDataCallback ;
@ -1040,7 +1040,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
cvReleaseMat ( & trimmedIdx ) ;
trimmedIdx = NULL ;
}
for ( i = 0 ; i < numsamples ; i + + )
{
idx = icvGetIdxAt ( sampleIdx , i ) ;
@ -1054,10 +1054,10 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
alpha = cvBoostNextWeakClassifier ( & eval , & data - > cls , weakTrainVals ,
& data - > weights , trainer ) ;
sumalpha + = alpha ;
for ( i = 0 ; i < = classifier - > count ; i + + )
{
if ( boosttype = = CV_RABCLASS )
if ( boosttype = = CV_RABCLASS )
{
classifier - > val [ i ] = cvLogRatio ( classifier - > val [ i ] ) ;
}
@ -1077,7 +1077,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
for ( j = 0 ; j < seq - > total ; j + + )
{
classifier = * ( ( CvCARTHaarClassifier * * ) cvGetSeqElem ( seq , j ) ) ;
eval . data . fl [ numpos ] + = classifier - > eval (
eval . data . fl [ numpos ] + = classifier - > eval (
( CvIntHaarClassifier * ) classifier ,
( sum_type * ) ( data - > sum . data . ptr + idx * data - > sum . step ) ,
( sum_type * ) ( data - > tilted . data . ptr + idx * data - > tilted . step ) ,
@ -1163,7 +1163,7 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
fflush ( stdout ) ;
}
# endif /* CV_VERBOSE */
} while ( falsealarm > maxfalsealarm & & ( ! maxsplits | | ( num_splits < maxsplits ) ) ) ;
cvBoostEndTraining ( & trainer ) ;
@ -1177,12 +1177,12 @@ CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data,
threshold ) ;
cvCvtSeqToArray ( seq , ( CvArr * ) stage - > classifier ) ;
}
/* CLEANUP */
cvReleaseMemStorage ( & storage ) ;
cvReleaseMat ( & weakTrainVals ) ;
cvFree ( & ( eval . data . ptr ) ) ;
return ( CvIntHaarClassifier * ) stage ;
}
@ -1192,7 +1192,7 @@ CvBackgroundData* icvCreateBackgroundData( const char* filename, CvSize winsize
{
CvBackgroundData * data = NULL ;
const char * dir = NULL ;
const char * dir = NULL ;
char full [ PATH_MAX ] ;
char * imgfilename = NULL ;
size_t datasize = 0 ;
@ -1202,7 +1202,7 @@ CvBackgroundData* icvCreateBackgroundData( const char* filename, CvSize winsize
int len = 0 ;
assert ( filename ! = NULL ) ;
dir = strrchr ( filename , ' \\ ' ) ;
if ( dir = = NULL )
{
@ -1223,7 +1223,7 @@ CvBackgroundData* icvCreateBackgroundData( const char* filename, CvSize winsize
{
count = 0 ;
datasize = 0 ;
/* count */
while ( ! feof ( input ) )
{
@ -1257,11 +1257,11 @@ CvBackgroundData* icvCreateBackgroundData( const char* filename, CvSize winsize
while ( ! feof ( input ) )
{
* imgfilename = ' \0 ' ;
if ( ! fgets ( imgfilename , PATH_MAX - ( int ) ( imgfilename - full ) - 1 , input ) )
if ( ! fgets ( imgfilename , PATH_MAX - ( int ) ( imgfilename - full ) - 1 , input ) )
break ;
len = ( int ) strlen ( imgfilename ) ;
if ( len > 0 & & imgfilename [ len - 1 ] = = ' \n ' )
imgfilename [ len - 1 ] = 0 , len - - ;
if ( len > 0 & & imgfilename [ len - 1 ] = = ' \n ' )
imgfilename [ len - 1 ] = 0 , len - - ;
if ( len > 0 )
{
if ( ( * imgfilename ) = = ' # ' ) continue ; /* comment */
@ -1351,14 +1351,14 @@ void icvGetNextFromBackgroundData( CvBackgroundData* data,
{
round = data - > round ;
//#ifdef CV_VERBOSE
//#ifdef CV_VERBOSE
// printf( "Open background image: %s\n", data->filename[data->last] );
//#endif /* CV_VERBOSE */
data - > last = rand ( ) % data - > count ;
data - > last % = data - > count ;
img = cvLoadImage ( data - > filename [ data - > last ] , 0 ) ;
if ( ! img )
if ( ! img )
continue ;
data - > round + = data - > last / data - > count ;
data - > round = data - > round % ( data - > winsize . width * data - > winsize . height ) ;
@ -1368,7 +1368,7 @@ void icvGetNextFromBackgroundData( CvBackgroundData* data,
offset . x = MIN ( offset . x , img - > width - data - > winsize . width ) ;
offset . y = MIN ( offset . y , img - > height - data - > winsize . height ) ;
if ( img ! = NULL & & img - > depth = = IPL_DEPTH_8U & & img - > nChannels = = 1 & &
offset . x > = 0 & & offset . y > = 0 )
{
@ -1403,7 +1403,7 @@ void icvGetNextFromBackgroundData( CvBackgroundData* data,
reader - > scale = MAX (
( ( float ) data - > winsize . width + reader - > point . x ) / ( ( float ) reader - > src . cols ) ,
( ( float ) data - > winsize . height + reader - > point . y ) / ( ( float ) reader - > src . rows ) ) ;
reader - > img = cvMat ( ( int ) ( reader - > scale * reader - > src . rows + 0.5F ) ,
( int ) ( reader - > scale * reader - > src . cols + 0.5F ) ,
CV_8UC1 , ( void * ) cvAlloc ( datasize ) ) ;
@ -1576,11 +1576,11 @@ void icvGetAuxImages( CvMat* img, CvMat* sum, CvMat* tilted,
sum_type valsum = 0 ;
sqsum_type valsqsum = 0 ;
double area = 0.0 ;
cvIntegral ( img , sum , sqsum , tilted ) ;
normrect = cvRect ( 1 , 1 , img - > cols - 2 , img - > rows - 2 ) ;
CV_SUM_OFFSETS ( p0 , p1 , p2 , p3 , normrect , img - > cols + 1 )
area = normrect . width * normrect . height ;
valsum = ( ( sum_type * ) ( sum - > data . ptr ) ) [ p0 ] - ( ( sum_type * ) ( sum - > data . ptr ) ) [ p1 ]
- ( ( sum_type * ) ( sum - > data . ptr ) ) [ p2 ] + ( ( sum_type * ) ( sum - > data . ptr ) ) [ p3 ] ;
@ -1621,28 +1621,28 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
int i = 0 ;
ccounter_t getcount = 0 ;
ccounter_t thread_getcount = 0 ;
ccounter_t consumed_count ;
ccounter_t consumed_count ;
ccounter_t thread_consumed_count ;
/* private variables */
CvMat img ;
CvMat sum ;
CvMat tilted ;
CvMat sqsum ;
sum_type * sumdata ;
sum_type * tilteddata ;
float * normfactor ;
/* end private variables */
assert ( data ! = NULL ) ;
assert ( first + count < = data - > maxnum ) ;
assert ( cascade ! = NULL ) ;
assert ( callback ! = NULL ) ;
// if( !cvbgdata ) return 0; this check needs to be done in the callback for BG
CCOUNTER_SET_ZERO ( getcount ) ;
CCOUNTER_SET_ZERO ( thread_getcount ) ;
CCOUNTER_SET_ZERO ( consumed_count ) ;
@ -1691,14 +1691,14 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
normfactor = data - > normfactor . data . fl + i ;
sum . data . ptr = ( uchar * ) sumdata ;
tilted . data . ptr = ( uchar * ) tilteddata ;
icvGetAuxImages ( & img , & sum , & tilted , & sqsum , normfactor ) ;
icvGetAuxImages ( & img , & sum , & tilted , & sqsum , normfactor ) ;
if ( cascade - > eval ( cascade , sumdata , tilteddata , * normfactor ) ! = 0.0F )
{
CCOUNTER_INC ( thread_getcount ) ;
break ;
}
}
# ifdef CV_VERBOSE
if ( ( i - first ) % 500 = = 0 )
{
@ -1720,7 +1720,7 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
CCOUNTER_ADD ( consumed_count , thread_consumed_count ) ;
}
} /* omp parallel */
if ( consumed ! = NULL )
{
* consumed = ( int ) consumed_count ;
@ -1731,7 +1731,7 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
/* *acceptance_ratio = ((double) count) / consumed_count; */
* acceptance_ratio = CCOUNTER_DIV ( count , consumed_count ) ;
}
return static_cast < int > ( getcount ) ;
}
@ -1791,7 +1791,7 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
// CV_SQSUM_MAT_TYPE,
// cvAlloc( sizeof( sqsum_type ) * (data->winsize.height + 1)
// * (data->winsize.width + 1) ) );
//
//
// #ifdef CV_OPENMP
// #pragma omp for schedule(static, 1)
// #endif /* CV_OPENMP */
@ -1800,7 +1800,7 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
// for( ; ; )
// {
// icvGetBackgroundImage( cvbgdata, cvbgreader, &img );
//
//
// CCOUNTER_INC(thread_consumed_count);
//
// sumdata = (sum_type*) (data->sum.data.ptr + i * data->sum.step);
@ -1808,7 +1808,7 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
// normfactor = data->normfactor.data.fl + i;
// sum.data.ptr = (uchar*) sumdata;
// tilted.data.ptr = (uchar*) tilteddata;
// icvGetAuxImages( &img, &sum, &tilted, &sqsum, normfactor );
// icvGetAuxImages( &img, &sum, &tilted, &sqsum, normfactor );
// if( cascade->eval( cascade, sumdata, tilteddata, *normfactor ) != 0.0F )
// {
// break;
@ -1822,7 +1822,7 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
// fflush( stderr );
// }
//#endif /* CV_VERBOSE */
//
//
// }
//
// cvFree( &(img.data.ptr) );
@ -1842,7 +1842,7 @@ int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count,
// /* *acceptance_ratio = ((double) count) / consumed_count; */
// *acceptance_ratio = CCOUNTER_DIV(count, consumed_count);
// }
//
//
// return count;
//}
@ -1853,24 +1853,24 @@ int icvGetHaarTraininDataFromVecCallback( CvMat* img, void* userdata )
int c = 0 ;
assert ( img - > rows * img - > cols = = ( ( CvVecFile * ) userdata ) - > vecsize ) ;
size_t elements_read = fread ( & tmp , sizeof ( tmp ) , 1 , ( ( CvVecFile * ) userdata ) - > input ) ;
CV_Assert ( elements_read = = 1 ) ;
elements_read = fread ( ( ( CvVecFile * ) userdata ) - > vector , sizeof ( short ) ,
( ( CvVecFile * ) userdata ) - > vecsize , ( ( CvVecFile * ) userdata ) - > input ) ;
CV_Assert ( elements_read = = ( size_t ) ( ( CvVecFile * ) userdata ) - > vecsize ) ;
if ( feof ( ( ( CvVecFile * ) userdata ) - > input ) | |
if ( feof ( ( ( CvVecFile * ) userdata ) - > input ) | |
( ( ( CvVecFile * ) userdata ) - > last ) + + > = ( ( CvVecFile * ) userdata ) - > count )
{
return 0 ;
}
for ( r = 0 ; r < img - > rows ; r + + )
{
for ( c = 0 ; c < img - > cols ; c + + )
{
CV_MAT_ELEM ( * img , uchar , r , c ) =
CV_MAT_ELEM ( * img , uchar , r , c ) =
( uchar ) ( ( ( CvVecFile * ) userdata ) - > vector [ r * img - > cols + c ] ) ;
}
}
@ -1878,14 +1878,14 @@ int icvGetHaarTraininDataFromVecCallback( CvMat* img, void* userdata )
return 1 ;
}
int icvGetHaarTrainingDataFromBGCallback ( CvMat * img , void * /*userdata*/ )
static int icvGetHaarTrainingDataFromBGCallback ( CvMat * img , void * /*userdata*/ )
{
if ( ! cvbgdata )
return 0 ;
if ( ! cvbgreader )
return 0 ;
// just in case icvGetBackgroundImage is not thread-safe ...
# ifdef CV_OPENMP
# pragma omp critical (get_background_image_callback)
@ -1893,7 +1893,7 @@ int icvGetHaarTrainingDataFromBGCallback ( CvMat* img, void* /*userdata*/ )
{
icvGetBackgroundImage ( cvbgdata , cvbgreader , img ) ;
}
return 1 ;
}
@ -1902,7 +1902,7 @@ int icvGetHaarTrainingDataFromBGCallback ( CvMat* img, void* /*userdata*/ )
* Get training data from . vec file
*/
static
int icvGetHaarTrainingDataFromVec ( CvHaarTrainingData * data , int first , int count ,
int icvGetHaarTrainingDataFromVec ( CvHaarTrainingData * data , int first , int count ,
CvIntHaarClassifier * cascade ,
const char * filename ,
int * consumed )
@ -1914,8 +1914,8 @@ int icvGetHaarTrainingDataFromVec( CvHaarTrainingData* data, int first, int coun
__BEGIN__ ;
CvVecFile file ;
short tmp = 0 ;
short tmp = 0 ;
file . input = NULL ;
if ( filename ) file . input = fopen ( filename , " rb " ) ;
@ -1967,8 +1967,8 @@ int icvGetHaarTrainingDataFromBG( CvHaarTrainingData* data, int first, int count
if ( filename )
{
CvVecFile file ;
short tmp = 0 ;
short tmp = 0 ;
file . input = NULL ;
if ( filename ) file . input = fopen ( filename , " rb " ) ;
@ -2009,7 +2009,7 @@ int icvGetHaarTrainingDataFromBG( CvHaarTrainingData* data, int first, int count
void cvCreateCascadeClassifier ( const char * dirname ,
const char * vecfilename ,
const char * bgfilename ,
const char * bgfilename ,
int npos , int nneg , int nstages ,
int numprecalculated ,
int numsplits ,
@ -2048,7 +2048,7 @@ void cvCreateCascadeClassifier( const char* dirname,
cascade = ( CvCascadeHaarClassifier * ) icvCreateCascadeHaarClassifier ( nstages ) ;
cascade - > count = 0 ;
if ( icvInitBackgroundReaders ( bgfilename , winsize ) )
{
data = icvCreateHaarTrainingData ( winsize , npos + nneg ) ;
@ -2061,7 +2061,7 @@ void cvCreateCascadeClassifier( const char* dirname,
for ( i = 0 ; i < nstages ; i + + , cascade - > count + + )
{
sprintf ( stagename , " %s%d/%s " , dirname , i , CV_STAGE_CART_FILE_NAME ) ;
cascade - > classifier [ i ] =
cascade - > classifier [ i ] =
icvLoadCARTStageHaarClassifier ( stagename , winsize . width + 1 ) ;
if ( ! icvMkDir ( stagename ) )
@ -2129,7 +2129,7 @@ void cvCreateCascadeClassifier( const char* dirname,
data - > sum . rows = data - > tilted . rows = poscount + negcount ;
data - > normfactor . cols = data - > weights . cols = data - > cls . cols =
poscount + negcount ;
posweight = ( equalweights ) ? 1.0F / ( poscount + negcount ) : ( 0.5F / poscount ) ;
negweight = ( equalweights ) ? 1.0F / ( poscount + negcount ) : ( 0.5F / negcount ) ;
for ( j = 0 ; j < poscount ; j + + )
@ -2169,7 +2169,7 @@ void cvCreateCascadeClassifier( const char* dirname,
file = fopen ( stagename , " w " ) ;
if ( file ! = NULL )
{
cascade - > classifier [ i ] - > save (
cascade - > classifier [ i ] - > save (
( CvIntHaarClassifier * ) cascade - > classifier [ i ] , file ) ;
fclose ( file ) ;
}
@ -2207,7 +2207,7 @@ void cvCreateCascadeClassifier( const char* dirname,
printf ( " FAILED TO INITIALIZE BACKGROUND READERS \n " ) ;
# endif /* CV_VERBOSE */
}
/* CLEAN UP */
icvDestroyBackgroundReaders ( ) ;
cascade - > release ( ( CvIntHaarClassifier * * ) & cascade ) ;
@ -2215,7 +2215,7 @@ void cvCreateCascadeClassifier( const char* dirname,
/* tree cascade classifier */
int icvNumSplits ( CvStageHaarClassifier * stage )
static int icvNumSplits ( CvStageHaarClassifier * stage )
{
int i ;
int num ;
@ -2229,7 +2229,7 @@ int icvNumSplits( CvStageHaarClassifier* stage )
return num ;
}
void icvSetNumSamples ( CvHaarTrainingData * training_data , int num )
static void icvSetNumSamples ( CvHaarTrainingData * training_data , int num )
{
assert ( num < = training_data - > maxnum ) ;
@ -2238,7 +2238,7 @@ void icvSetNumSamples( CvHaarTrainingData* training_data, int num )
training_data - > cls . cols = training_data - > weights . cols = num ;
}
void icvSetWeightsAndClasses ( CvHaarTrainingData * training_data ,
static void icvSetWeightsAndClasses ( CvHaarTrainingData * training_data ,
int num1 , float weight1 , float cls1 ,
int num2 , float weight2 , float cls2 )
{
@ -2258,7 +2258,7 @@ void icvSetWeightsAndClasses( CvHaarTrainingData* training_data,
}
}
CvMat * icvGetUsedValues ( CvHaarTrainingData * training_data ,
static CvMat * icvGetUsedValues ( CvHaarTrainingData * training_data ,
int start , int num ,
CvIntHaarFeatures * haar_features ,
CvStageHaarClassifier * stage )
@ -2302,7 +2302,7 @@ CvMat* icvGetUsedValues( CvHaarTrainingData* training_data,
}
total = last + 1 ;
CV_CALL ( ptr = cvCreateMat ( num , total , CV_32FC1 ) ) ;
# ifdef CV_OPENMP
# pragma omp parallel for
@ -2351,7 +2351,7 @@ typedef struct CvSplit
void cvCreateTreeCascadeClassifier ( const char * dirname ,
const char * vecfilename ,
const char * bgfilename ,
const char * bgfilename ,
int npos , int nneg , int nstages ,
int numprecalculated ,
int numsplits ,
@ -2425,11 +2425,11 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
sprintf ( stage_name , " %s/ " , dirname ) ;
suffix = stage_name + strlen ( stage_name ) ;
if ( ! bg_vecfile )
if ( ! icvInitBackgroundReaders ( bgfilename , winsize ) & & nstages > 0 )
CV_ERROR ( CV_StsError , " Unable to read negative images " ) ;
if ( nstages > 0 )
{
/* width-first search in the tree */
@ -2438,7 +2438,7 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
CvSplit * first_split ;
CvSplit * last_split ;
CvSplit * cur_split ;
CvTreeCascadeNode * parent ;
CvTreeCascadeNode * cur_node ;
CvTreeCascadeNode * last_node ;
@ -2447,7 +2447,7 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
parent = leaves ;
leaves = NULL ;
do
{
{
int best_clusters ; /* best selected number of clusters */
float posweight , negweight ;
double leaf_fa_rate ;
@ -2536,7 +2536,7 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
multiple_clusters = NULL ;
printf ( " Number of used features: %d \n " , single_num ) ;
if ( maxtreesplits > = 0 )
{
max_clusters = MIN ( max_clusters , maxtreesplits - total_splits + 1 ) ;
@ -2594,7 +2594,7 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
printf ( " Clusters are too small. Clustering aborted. \n " ) ;
break ;
}
cur_num = 0 ;
cur_node = last_node = NULL ;
for ( cluster = 0 ; ( cluster < k ) & & ( cur_num < best_num ) ; cluster + + )
@ -2676,7 +2676,7 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
CV_CALL ( cur_split = ( CvSplit * ) cvAlloc ( sizeof ( * cur_split ) ) ) ;
CV_ZERO_OBJ ( cur_split ) ;
if ( last_split ) last_split - > next = cur_split ;
else first_split = cur_split ;
last_split = cur_split ;
@ -2734,7 +2734,7 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
? last_split - > multiple_clusters : last_split - > single_cluster ;
parent = last_split - > parent ;
if ( parent ) parent - > child = cur_node ;
/* connect leaves via next_same_level and save them */
for ( ; cur_node ; cur_node = cur_node - > next )
{
@ -2768,14 +2768,14 @@ void cvCreateTreeCascadeClassifier( const char* dirname,
printf ( " \n Parent node: %s \n " , buf ) ;
printf ( " Chosen number of splits: %d \n \n " , ( last_split - > multiple_clusters )
? ( last_split - > num_clusters - 1 ) : 0 ) ;
cur_split = last_split ;
last_split = last_split - > next ;
cvFree ( & cur_split ) ;
} /* for each split point */
printf ( " Total number of splits: %d \n " , total_splits ) ;
if ( ! ( tcc - > root ) ) tcc - > root = leaves ;
CV_CALL ( icvPrintTreeCascade ( tcc - > root ) ) ;
@ -2903,7 +2903,7 @@ void cvCreateTrainingSamples( const char* filename,
inverse = ( rand ( ) > ( RAND_MAX / 2 ) ) ;
}
icvPlaceDistortedSample ( & sample , inverse , maxintensitydev ,
maxxangle , maxyangle , maxzangle ,
maxxangle , maxyangle , maxzangle ,
0 /* nonzero means placing image without cut offs */ ,
0.0 /* nozero adds random shifting */ ,
0.0 /* nozero adds random scaling */ ,
@ -2931,13 +2931,13 @@ void cvCreateTrainingSamples( const char* filename,
cvFree ( & ( sample . data . ptr ) ) ;
fclose ( output ) ;
} /* if( output != NULL ) */
icvEndSampleDistortion ( & data ) ;
}
# ifdef CV_VERBOSE
printf ( " \r \r " ) ;
# endif /* CV_VERBOSE */
# endif /* CV_VERBOSE */
}
@ -2986,7 +2986,7 @@ void cvCreateTestSamples( const char* infoname,
{
cvNamedWindow ( " Image " , CV_WINDOW_AUTOSIZE ) ;
}
info = fopen ( infoname , " w " ) ;
strcpy ( fullname , infoname ) ;
filename = strrchr ( fullname , ' \\ ' ) ;
@ -3008,7 +3008,7 @@ void cvCreateTestSamples( const char* infoname,
for ( i = 0 ; i < count ; i + + )
{
icvGetNextFromBackgroundData ( cvbgdata , cvbgreader ) ;
maxscale = MIN ( 0.7F * cvbgreader - > src . cols / winwidth ,
0.7F * cvbgreader - > src . rows / winheight ) ;
if ( maxscale < 1.0F ) continue ;
@ -3025,14 +3025,14 @@ void cvCreateTestSamples( const char* infoname,
inverse = ( rand ( ) > ( RAND_MAX / 2 ) ) ;
}
icvPlaceDistortedSample ( & win , inverse , maxintensitydev ,
maxxangle , maxyangle , maxzangle ,
maxxangle , maxyangle , maxzangle ,
1 , 0.0 , 0.0 , & data ) ;
sprintf ( filename , " %04d_%04d_%04d_%04d_%04d.jpg " ,
( i + 1 ) , x , y , width , height ) ;
if ( info )
if ( info )
{
fprintf ( info , " %s %d %d %d %d %d \n " ,
filename , 1 , x , y , width , height ) ;