Merge pull request #8342 from grundman:patch-1
This commit is contained in:
commit
2409924dbc
@ -693,11 +693,16 @@ public:
|
|||||||
//go through all modes
|
//go through all modes
|
||||||
//////
|
//////
|
||||||
|
|
||||||
//renormalize weights
|
// Renormalize weights. In the special case that the pixel does
|
||||||
totalWeight = 1.f/totalWeight;
|
// not agree with any modes, set weights to zero (a new mode will be added below).
|
||||||
|
float invWeight = 0.f;
|
||||||
|
if (std::abs(totalWeight) > FLT_EPSILON) {
|
||||||
|
invWeight = 1.f/totalWeight;
|
||||||
|
}
|
||||||
|
|
||||||
for( int mode = 0; mode < nmodes; mode++ )
|
for( int mode = 0; mode < nmodes; mode++ )
|
||||||
{
|
{
|
||||||
gmm[mode].weight *= totalWeight;
|
gmm[mode].weight *= invWeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
//make new mode if needed and exit
|
//make new mode if needed and exit
|
||||||
@ -900,7 +905,10 @@ void BackgroundSubtractorMOG2Impl::getBackgroundImage_intern(OutputArray backgro
|
|||||||
if(totalWeight > backgroundRatio)
|
if(totalWeight > backgroundRatio)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
float invWeight = 1.f/totalWeight;
|
float invWeight = 0.f;
|
||||||
|
if (std::abs(totalWeight) > FLT_EPSILON) {
|
||||||
|
invWeight = 1.f/totalWeight;
|
||||||
|
}
|
||||||
|
|
||||||
meanBackground.at<Vec<T,CN> >(row, col) = Vec<T,CN>(meanVal * invWeight);
|
meanBackground.at<Vec<T,CN> >(row, col) = Vec<T,CN>(meanVal * invWeight);
|
||||||
meanVal = 0.f;
|
meanVal = 0.f;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user