|
|
|
@ -458,10 +458,8 @@ CV_INLINE void |
|
|
|
|
uchar nShadowDetection |
|
|
|
|
) |
|
|
|
|
{ |
|
|
|
|
int size=_src.rows*_src.cols; |
|
|
|
|
int nchannels = CV_MAT_CN(_src.type()); |
|
|
|
|
const uchar* pDataCurrent=_src.ptr(0); |
|
|
|
|
uchar* pDataOutput=_dst.ptr(0); |
|
|
|
|
|
|
|
|
|
//model
|
|
|
|
|
uchar* m_aModel=_bgmodel.ptr(0); |
|
|
|
|
uchar* m_nNextLongUpdate=_nNextLongUpdate.ptr(0); |
|
|
|
@ -509,10 +507,12 @@ CV_INLINE void |
|
|
|
|
if (_nLongCounter >= m_nLongUpdate) _nLongCounter = 0; |
|
|
|
|
|
|
|
|
|
//go through the image
|
|
|
|
|
for (long i=0;i<size;i++) |
|
|
|
|
long i = 0; |
|
|
|
|
for (long y = 0; y < _src.rows; y++) |
|
|
|
|
{ |
|
|
|
|
for (long x = 0; x < _src.cols; x++) |
|
|
|
|
{ |
|
|
|
|
const uchar* data=pDataCurrent; |
|
|
|
|
pDataCurrent=pDataCurrent+nchannels; |
|
|
|
|
const uchar* data = _src.ptr(y, x); |
|
|
|
|
|
|
|
|
|
//update model+ background subtract
|
|
|
|
|
uchar include=0; |
|
|
|
@ -539,18 +539,19 @@ CV_INLINE void |
|
|
|
|
{ |
|
|
|
|
case 0: |
|
|
|
|
//foreground
|
|
|
|
|
(* pDataOutput)=255; |
|
|
|
|
*_dst.ptr(y, x) = 255; |
|
|
|
|
break; |
|
|
|
|
case 1: |
|
|
|
|
//background
|
|
|
|
|
(* pDataOutput)=0; |
|
|
|
|
*_dst.ptr(y, x) = 0; |
|
|
|
|
break; |
|
|
|
|
case 2: |
|
|
|
|
//shadow
|
|
|
|
|
(* pDataOutput)=nShadowDetection; |
|
|
|
|
*_dst.ptr(y, x) = nShadowDetection; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
pDataOutput++; |
|
|
|
|
i++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|