Skip to content

Commit c5c620b

Browse files
committed
ocl: Avoid unnecessary initializing when non-UMat parameters are used
1 parent d84c7e5 commit c5c620b

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

modules/video/src/bgfg_gaussmix2.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,11 @@ class MOG2Invoker : public ParallelLoopBody
770770

771771
bool BackgroundSubtractorMOG2Impl::ocl_apply(InputArray _image, OutputArray _fgmask, double learningRate)
772772
{
773+
bool needToInitialize = nframes == 0 || learningRate >= 1 || _image.size() != frameSize || _image.type() != frameType;
774+
775+
if( needToInitialize )
776+
initialize(_image.size(), _image.type());
777+
773778
++nframes;
774779
learningRate = learningRate >= 0 && nframes > 1 ? learningRate : 1./std::min( 2*nframes, history );
775780
CV_Assert(learningRate >= 0);
@@ -841,21 +846,21 @@ void BackgroundSubtractorMOG2Impl::apply(InputArray _image, OutputArray _fgmask,
841846
{
842847
CV_INSTRUMENT_REGION()
843848

844-
bool needToInitialize = nframes == 0 || learningRate >= 1 || _image.size() != frameSize || _image.type() != frameType;
845-
846-
if( needToInitialize )
847-
initialize(_image.size(), _image.type());
848-
849849
#ifdef HAVE_OPENCL
850850
if (opencl_ON)
851851
{
852852
CV_OCL_RUN(_fgmask.isUMat(), ocl_apply(_image, _fgmask, learningRate))
853853

854854
opencl_ON = false;
855-
initialize(_image.size(), _image.type());
855+
nframes = 0;
856856
}
857857
#endif
858858

859+
bool needToInitialize = nframes == 0 || learningRate >= 1 || _image.size() != frameSize || _image.type() != frameType;
860+
861+
if( needToInitialize )
862+
initialize(_image.size(), _image.type());
863+
859864
Mat image = _image.getMat();
860865
_fgmask.create( image.size(), CV_8U );
861866
Mat fgmask = _fgmask.getMat();

0 commit comments

Comments
 (0)