39
39
//
40
40
//M*/
41
41
42
+ #include < limits>
42
43
#include " precomp.hpp"
43
44
// TODO delete highgui include
44
45
// #include <opencv2/highgui.hpp>
@@ -81,15 +82,15 @@ bool MotionSaliencyBinWangApr2014::init()
81
82
// Since data is even, the median is estimated using two values that occupy
82
83
// the position (n / 2) and ((n / 2) +1) (choose their arithmetic mean).
83
84
84
- potentialBackground = Mat ( imgSize.height , imgSize.width , CV_32FC2, Scalar ( NAN , 0 ) );
85
+ potentialBackground = Mat ( imgSize.height , imgSize.width , CV_32FC2, Scalar ( std::numeric_limits< float >:: quiet_NaN () , 0 ) );
85
86
86
87
backgroundModel.resize ( K + 1 );
87
88
88
89
for ( int i = 0 ; i < K + 1 ; i++ )
89
90
{
90
91
Mat* tmpm = new Mat;
91
92
tmpm->create ( imgSize.height , imgSize.width , CV_32FC2 );
92
- tmpm->setTo ( Scalar ( NAN , 0 ) );
93
+ tmpm->setTo ( Scalar ( std::numeric_limits< float >:: quiet_NaN () , 0 ) );
93
94
Ptr<Mat> tmp = Ptr<Mat>( tmpm );
94
95
backgroundModel[i] = tmp;
95
96
}
@@ -418,50 +419,50 @@ bool MotionSaliencyBinWangApr2014::templateReplacement( const Mat& finalBFMask,
418
419
if ( i > 0 && j > 0 && i < ( backgroundModel[z]->rows - 1 ) && j < ( backgroundModel[z]->cols - 1 ) )
419
420
{
420
421
split ( *backgroundModel[z], mv );
421
- backgroundModelROI = mv[0 ]( Rect ( j - (int ) floor ( roiSize / 2 ), i - (int ) floor ( roiSize / 2 ), roiSize, roiSize ) );
422
+ backgroundModelROI = mv[0 ]( Rect ( j - (int ) floor (( float ) roiSize / 2 ), i - (int ) floor (( float ) roiSize / 2 ), roiSize, roiSize ) );
422
423
}
423
424
else if ( i == 0 && j == 0 ) // upper leftt
424
425
{
425
426
split ( *backgroundModel[z], mv );
426
- backgroundModelROI = mv[0 ]( Rect ( j, i, (int ) ceil ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ) ) );
427
+ backgroundModelROI = mv[0 ]( Rect ( j, i, (int ) ceil (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ) ) );
427
428
}
428
429
else if ( j == 0 && i > 0 && i < ( backgroundModel[z]->rows - 1 ) ) // middle left
429
430
{
430
431
split ( *backgroundModel[z], mv );
431
- backgroundModelROI = mv[0 ]( Rect ( j, i - (int ) floor ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ), roiSize ) );
432
+ backgroundModelROI = mv[0 ]( Rect ( j, i - (int ) floor (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ), roiSize ) );
432
433
}
433
434
else if ( i == ( backgroundModel[z]->rows - 1 ) && j == 0 ) // down left
434
435
{
435
436
split ( *backgroundModel[z], mv );
436
- backgroundModelROI = mv[0 ]( Rect ( j, i - (int ) floor ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ) ) );
437
+ backgroundModelROI = mv[0 ]( Rect ( j, i - (int ) floor (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ) ) );
437
438
}
438
439
else if ( i == 0 && j > 0 && j < ( backgroundModel[z]->cols - 1 ) ) // upper - middle
439
440
{
440
441
split ( *backgroundModel[z], mv );
441
- backgroundModelROI = mv[0 ]( Rect ( ( j - (int ) floor ( roiSize / 2 ) ), i, roiSize, (int ) ceil ( roiSize / 2 ) ) );
442
+ backgroundModelROI = mv[0 ]( Rect ( ( j - (int ) floor (( float ) roiSize / 2 ) ), i, roiSize, (int ) ceil (( float ) roiSize / 2 ) ) );
442
443
}
443
444
else if ( i == ( backgroundModel[z]->rows - 1 ) && j > 0 && j < ( backgroundModel[z]->cols - 1 ) ) // down middle
444
445
{
445
446
split ( *backgroundModel[z], mv );
446
447
backgroundModelROI = mv[0 ](
447
- Rect ( j - (int ) floor ( roiSize / 2 ), i - (int ) floor ( roiSize / 2 ), roiSize, (int ) ceil ( roiSize / 2 ) ) );
448
+ Rect ( j - (int ) floor (( float ) roiSize / 2 ), i - (int ) floor (( float ) roiSize / 2 ), roiSize, (int ) ceil (( float ) roiSize / 2 ) ) );
448
449
}
449
450
else if ( i == 0 && j == ( backgroundModel[z]->cols - 1 ) ) // upper right
450
451
{
451
452
split ( *backgroundModel[z], mv );
452
- backgroundModelROI = mv[0 ]( Rect ( j - (int ) floor ( roiSize / 2 ), i, (int ) ceil ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ) ) );
453
+ backgroundModelROI = mv[0 ]( Rect ( j - (int ) floor (( float ) roiSize / 2 ), i, (int ) ceil (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ) ) );
453
454
}
454
455
else if ( j == ( backgroundModel[z]->cols - 1 ) && i > 0 && i < ( backgroundModel[z]->rows - 1 ) ) // middle - right
455
456
{
456
457
split ( *backgroundModel[z], mv );
457
458
backgroundModelROI = mv[0 ](
458
- Rect ( j - (int ) floor ( roiSize / 2 ), i - (int ) floor ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ), roiSize ) );
459
+ Rect ( j - (int ) floor (( float ) roiSize / 2 ), i - (int ) floor (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ), roiSize ) );
459
460
}
460
461
else if ( i == ( backgroundModel[z]->rows - 1 ) && j == ( backgroundModel[z]->cols - 1 ) ) // down right
461
462
{
462
463
split ( *backgroundModel[z], mv );
463
464
backgroundModelROI = mv[0 ](
464
- Rect ( j - (int ) floor ( roiSize / 2 ), i - (int ) floor ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ), (int ) ceil ( roiSize / 2 ) ) );
465
+ Rect ( j - (int ) floor (( float ) roiSize / 2 ), i - (int ) floor (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ), (int ) ceil (( float ) roiSize / 2 ) ) );
465
466
}
466
467
467
468
/* Check if the value of current pixel BA in potentialBackground model is already contained in at least one of its neighbors'
@@ -479,7 +480,7 @@ bool MotionSaliencyBinWangApr2014::templateReplacement( const Mat& finalBFMask,
479
480
// ///////////////// REPLACEMENT of backgroundModel template ///////////////////
480
481
// replace TA with current TK
481
482
backgroundModel[backgroundModel.size () - 1 ]->at <Vec2f>( i, j ) = potentialBackground.at <Vec2f>( i, j );
482
- potentialBackground.at <Vec2f>( i, j )[0 ] = ( float )NAN ;
483
+ potentialBackground.at <Vec2f>( i, j )[0 ] = std::numeric_limits< float >:: quiet_NaN () ;
483
484
potentialBackground.at <Vec2f>( i, j )[1 ] = 0 ;
484
485
485
486
break ;
@@ -489,7 +490,7 @@ bool MotionSaliencyBinWangApr2014::templateReplacement( const Mat& finalBFMask,
489
490
else
490
491
{
491
492
backgroundModel[backgroundModel.size () - 1 ]->at <Vec2f>( i, j ) = potentialBackground.at <Vec2f>( i, j );
492
- potentialBackground.at <Vec2f>( i, j )[0 ] = ( float )NAN ;
493
+ potentialBackground.at <Vec2f>( i, j )[0 ] = std::numeric_limits< float >:: quiet_NaN () ;
493
494
potentialBackground.at <Vec2f>( i, j )[1 ] = 0 ;
494
495
}
495
496
} // close if of EVALUATION
0 commit comments