Merge pull request #3786 from jviney:fix_background_subtractor_knn_width_step
This commit is contained in:
commit
8c69266cbf
@ -458,10 +458,8 @@ CV_INLINE void
|
|||||||
uchar nShadowDetection
|
uchar nShadowDetection
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int size=_src.rows*_src.cols;
|
|
||||||
int nchannels = CV_MAT_CN(_src.type());
|
int nchannels = CV_MAT_CN(_src.type());
|
||||||
const uchar* pDataCurrent=_src.ptr(0);
|
|
||||||
uchar* pDataOutput=_dst.ptr(0);
|
|
||||||
//model
|
//model
|
||||||
uchar* m_aModel=_bgmodel.ptr(0);
|
uchar* m_aModel=_bgmodel.ptr(0);
|
||||||
uchar* m_nNextLongUpdate=_nNextLongUpdate.ptr(0);
|
uchar* m_nNextLongUpdate=_nNextLongUpdate.ptr(0);
|
||||||
@ -509,48 +507,51 @@ CV_INLINE void
|
|||||||
if (_nLongCounter >= m_nLongUpdate) _nLongCounter = 0;
|
if (_nLongCounter >= m_nLongUpdate) _nLongCounter = 0;
|
||||||
|
|
||||||
//go through the image
|
//go through the image
|
||||||
for (long i=0;i<size;i++)
|
long i = 0;
|
||||||
|
for (long y = 0; y < _src.rows; y++)
|
||||||
{
|
{
|
||||||
const uchar* data=pDataCurrent;
|
for (long x = 0; x < _src.cols; x++)
|
||||||
pDataCurrent=pDataCurrent+nchannels;
|
|
||||||
|
|
||||||
//update model+ background subtract
|
|
||||||
uchar include=0;
|
|
||||||
int result= _cvCheckPixelBackgroundNP(i, data, nchannels,
|
|
||||||
m_nN, m_aModel, m_fTb,m_nkNN, m_fTau,m_bShadowDetection,include);
|
|
||||||
|
|
||||||
_cvUpdatePixelBackgroundNP(i,data,nchannels,
|
|
||||||
m_nN, m_aModel,
|
|
||||||
m_nNextLongUpdate,
|
|
||||||
m_nNextMidUpdate,
|
|
||||||
m_nNextShortUpdate,
|
|
||||||
m_aModelIndexLong,
|
|
||||||
m_aModelIndexMid,
|
|
||||||
m_aModelIndexShort,
|
|
||||||
m_nLongCounter,
|
|
||||||
m_nMidCounter,
|
|
||||||
m_nShortCounter,
|
|
||||||
m_nLongUpdate,
|
|
||||||
m_nMidUpdate,
|
|
||||||
m_nShortUpdate,
|
|
||||||
include
|
|
||||||
);
|
|
||||||
switch (result)
|
|
||||||
{
|
{
|
||||||
case 0:
|
const uchar* data = _src.ptr(y, x);
|
||||||
//foreground
|
|
||||||
(* pDataOutput)=255;
|
//update model+ background subtract
|
||||||
break;
|
uchar include=0;
|
||||||
case 1:
|
int result= _cvCheckPixelBackgroundNP(i, data, nchannels,
|
||||||
//background
|
m_nN, m_aModel, m_fTb,m_nkNN, m_fTau,m_bShadowDetection,include);
|
||||||
(* pDataOutput)=0;
|
|
||||||
break;
|
_cvUpdatePixelBackgroundNP(i,data,nchannels,
|
||||||
case 2:
|
m_nN, m_aModel,
|
||||||
//shadow
|
m_nNextLongUpdate,
|
||||||
(* pDataOutput)=nShadowDetection;
|
m_nNextMidUpdate,
|
||||||
break;
|
m_nNextShortUpdate,
|
||||||
|
m_aModelIndexLong,
|
||||||
|
m_aModelIndexMid,
|
||||||
|
m_aModelIndexShort,
|
||||||
|
m_nLongCounter,
|
||||||
|
m_nMidCounter,
|
||||||
|
m_nShortCounter,
|
||||||
|
m_nLongUpdate,
|
||||||
|
m_nMidUpdate,
|
||||||
|
m_nShortUpdate,
|
||||||
|
include
|
||||||
|
);
|
||||||
|
switch (result)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
//foreground
|
||||||
|
*_dst.ptr(y, x) = 255;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
//background
|
||||||
|
*_dst.ptr(y, x) = 0;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
//shadow
|
||||||
|
*_dst.ptr(y, x) = nShadowDetection;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
pDataOutput++;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user