@@ -374,23 +374,23 @@ static void cvWarpPerspective( Mat src, Mat dst, double quad[4][2] )
374
374
i00 = i10 = i01 = i11 = (int ) fill_value;
375
375
376
376
/* linear interpolation using 2x2 neighborhood */
377
- if ( isrc_x >= 0 && isrc_x <= src.cols &&
378
- isrc_y >= 0 && isrc_y <= src.rows )
377
+ if ( isrc_x >= 0 && isrc_x < src.cols &&
378
+ isrc_y >= 0 && isrc_y < src.rows )
379
379
{
380
380
i00 = src.at <uchar>(isrc_y, isrc_x);
381
381
}
382
- if ( isrc_x >= -1 && isrc_x < src.cols &&
383
- isrc_y >= 0 && isrc_y <= src.rows )
382
+ if ( isrc_x >= -1 && isrc_x + 1 < src.cols &&
383
+ isrc_y >= 0 && isrc_y < src.rows )
384
384
{
385
385
i10 = src.at <uchar>(isrc_y, isrc_x + 1 );
386
386
}
387
- if ( isrc_x >= 0 && isrc_x <= src.cols &&
388
- isrc_y >= -1 && isrc_y < src.rows )
387
+ if ( isrc_x >= 0 && isrc_x < src.cols &&
388
+ isrc_y >= -1 && isrc_y + 1 < src.rows )
389
389
{
390
390
i01 = src.at <uchar>(isrc_y + 1 , isrc_x);
391
391
}
392
- if ( isrc_x >= -1 && isrc_x < src.cols &&
393
- isrc_y >= -1 && isrc_y < src.rows )
392
+ if ( isrc_x >= -1 && isrc_x + 1 < src.cols &&
393
+ isrc_y >= -1 && isrc_y + 1 < src.rows )
394
394
{
395
395
i11 = src.at <uchar>(isrc_y + 1 , isrc_x + 1 );
396
396
}
@@ -458,11 +458,10 @@ void icvRandomQuad( int width, int height, double quad[4][2],
458
458
Mat rotMat ( 3 , 3 , CV_64FC1, &rotMatData[0 ] );
459
459
Mat vect ( 3 , 1 , CV_64FC1, &vectData[0 ] );
460
460
461
- rotVectData[0 ] = maxxangle * (2.0 * rand () / RAND_MAX - 1.0 );
462
- rotVectData[1 ] = ( maxyangle - fabs ( rotVectData[0 ] ) )
463
- * (2.0 * rand () / RAND_MAX - 1.0 );
464
- rotVectData[2 ] = maxzangle * (2.0 * rand () / RAND_MAX - 1.0 );
465
- d = (distfactor + distfactor2 * (2.0 * rand () / RAND_MAX - 1.0 )) * width;
461
+ rotVectData[0 ] = theRNG ().uniform ( -maxxangle, maxxangle );
462
+ rotVectData[1 ] = ( maxyangle - fabs ( rotVectData[0 ] ) ) * theRNG ().uniform ( -1.0 , 1.0 );
463
+ rotVectData[2 ] = theRNG ().uniform ( -maxzangle, maxzangle );
464
+ d = ( distfactor + distfactor2 * theRNG ().uniform ( -1.0 , 1.0 ) ) * width;
466
465
467
466
Rodrigues ( rotVect, rotMat );
468
467
@@ -662,15 +661,15 @@ void icvPlaceDistortedSample( Mat background,
662
661
cr.height = (int ) (MAX ( quad[2 ][1 ], quad[3 ][1 ] ) + 0 .5F ) - cr.y ;
663
662
}
664
663
665
- xshift = maxshiftf * rand () / RAND_MAX ;
666
- yshift = maxshiftf * rand () / RAND_MAX ;
664
+ xshift = theRNG (). uniform ( 0 ., maxshiftf ) ;
665
+ yshift = theRNG (). uniform ( 0 ., maxshiftf ) ;
667
666
668
667
cr.x -= (int ) ( xshift * cr.width );
669
668
cr.y -= (int ) ( yshift * cr.height );
670
669
cr.width = (int ) ((1.0 + maxshiftf) * cr.width );
671
670
cr.height = (int ) ((1.0 + maxshiftf) * cr.height );
672
671
673
- randscale = maxscalef * rand () / RAND_MAX ;
672
+ randscale = theRNG (). uniform ( 0 ., maxscalef ) ;
674
673
cr.x -= (int ) ( 0.5 * randscale * cr.width );
675
674
cr.y -= (int ) ( 0.5 * randscale * cr.height );
676
675
cr.width = (int ) ((1.0 + randscale) * cr.width );
@@ -689,7 +688,7 @@ void icvPlaceDistortedSample( Mat background,
689
688
resize ( data->img (roi), img, img.size (), 0 , 0 , INTER_LINEAR_EXACT);
690
689
resize ( data->maskimg (roi), maskimg, maskimg.size (), 0 , 0 , INTER_LINEAR_EXACT);
691
690
692
- forecolordev = ( int ) (maxintensitydev * ( 2.0 * rand () / RAND_MAX - 1.0 ) );
691
+ forecolordev = theRNG (). uniform ( -maxintensitydev, maxintensitydev );
693
692
694
693
for ( r = 0 ; r < img.rows ; r++ )
695
694
{
@@ -829,7 +828,7 @@ void icvGetNextFromBackgroundData( CvBackgroundData* data,
829
828
{
830
829
round = data->round ;
831
830
832
- data->last = rand ( ) % data->count ;
831
+ data->last = theRNG (). uniform ( 0 , RAND_MAX ) % data->count ;
833
832
834
833
#ifdef CV_VERBOSE
835
834
printf ( " Open background image: %s\n " , data->filename [data->last ] );
@@ -877,7 +876,7 @@ void icvGetNextFromBackgroundData( CvBackgroundData* data,
877
876
((float ) data->winsize .height + reader->point .y ) / ((float ) reader->src .rows ) );
878
877
879
878
resize ( reader->src , reader->img ,
880
- Size ((int )(reader->scale * reader->src .rows + 0 .5F ), (int )(reader->scale * reader->src .cols + 0 .5F )), 0 , 0 , INTER_LINEAR_EXACT );
879
+ Size ((int )(reader->scale * reader->src .cols + 0 .5F ), (int )(reader->scale * reader->src .rows + 0 .5F )), 0 , 0 , INTER_LINEAR_EXACT);
881
880
}
882
881
883
882
/*
@@ -932,7 +931,7 @@ void icvGetBackgroundImage( CvBackgroundData* data,
932
931
if ( reader->scale <= 1 .0F )
933
932
{
934
933
resize (reader->src , reader->img ,
935
- Size ((int )(reader->scale * reader->src .rows ), (int )(reader->scale * reader->src .cols )), 0 , 0 , INTER_LINEAR_EXACT);
934
+ Size ((int )(reader->scale * reader->src .cols ), (int )(reader->scale * reader->src .rows )), 0 , 0 , INTER_LINEAR_EXACT);
936
935
}
937
936
else
938
937
{
@@ -1072,7 +1071,7 @@ void cvCreateTrainingSamples( const char* filename,
1072
1071
1073
1072
if ( invert == CV_RANDOM_INVERT )
1074
1073
{
1075
- inverse = ( rand () > (RAND_MAX/ 2 ) );
1074
+ inverse = theRNG (). uniform ( 0 , 2 );
1076
1075
}
1077
1076
icvPlaceDistortedSample ( sample, inverse, maxintensitydev,
1078
1077
maxxangle, maxyangle, maxzangle,
@@ -1182,16 +1181,16 @@ void cvCreateTestSamples( const char* infoname,
1182
1181
1183
1182
if ( maxscale < 1 .0F ) continue ;
1184
1183
1185
- scale = (( float )maxscale - 1 .0F ) * rand () / RAND_MAX + 1 . 0F ;
1184
+ scale = theRNG (). uniform ( 1 .0F , ( float )maxscale ) ;
1186
1185
1187
1186
width = (int ) (scale * winwidth);
1188
1187
height = (int ) (scale * winheight);
1189
- x = (int ) (( 0.1 + 0.8 * rand ()/RAND_MAX ) * (cvbgreader->src .cols - width));
1190
- y = (int ) (( 0.1 + 0.8 * rand ()/RAND_MAX ) * (cvbgreader->src .rows - height));
1188
+ x = (int ) ( theRNG (). uniform ( 0.1 , 0.8 ) * (cvbgreader->src .cols - width));
1189
+ y = (int ) ( theRNG (). uniform ( 0.1 , 0.8 ) * (cvbgreader->src .rows - height));
1191
1190
1192
1191
if ( invert == CV_RANDOM_INVERT )
1193
1192
{
1194
- inverse = ( rand () > (RAND_MAX/ 2 ) );
1193
+ inverse = theRNG (). uniform ( 0 , 2 );
1195
1194
}
1196
1195
icvPlaceDistortedSample ( cvbgreader->src (Rect (x, y, width, height)), inverse, maxintensitydev,
1197
1196
maxxangle, maxyangle, maxzangle,
@@ -1452,9 +1451,9 @@ void cvShowVecSamples( const char* filename, int winwidth, int winheight,
1452
1451
icvGetTraininDataFromVec ( sample, file );
1453
1452
if ( scale != 1.0 )
1454
1453
resize ( sample, sample,
1455
- Size (MAX (1 , cvCeil (scale * winheight )), MAX (1 , cvCeil (scale * winwidth ))), 0 , 0 , INTER_LINEAR_EXACT);
1454
+ Size (MAX (1 , cvCeil (scale * winwidth )), MAX (1 , cvCeil (scale * winheight ))), 0 , 0 , INTER_LINEAR_EXACT);
1456
1455
imshow ( " Sample" , sample );
1457
- if ( ( waitKey ( 0 ) & 0xFF ) == 27 ) break ;
1456
+ if ( waitKey ( 0 ) == 27 ) break ;
1458
1457
}
1459
1458
}
1460
1459
fclose ( file.input );
0 commit comments