public IBoundingBox FindObject(Image <Gray, byte> currentFrame) { IBoundingBox trackerBoundingBox = _useTracker ? _tracker.FindObject(currentFrame) : null; List <IBoundingBox> detectorBoundingBoxes = _useDetector ? _detector.FindObject(currentFrame) : null; bool reinitializeTracker; bool prevValid = _currentBbValid; bool currValid; IBoundingBox output = _outputStrategy.DetermineBoundingBox( trackerBoundingBox, detectorBoundingBoxes, currentFrame, out reinitializeTracker, prevValid, out currValid ); _currentBbValid = currValid; if (reinitializeTracker) { _tracker.Initialize(currentFrame, output); } if (_currentBbValid && _useLearner) { _learner.TrainDetector(currentFrame, output, out currValid); _currentBbValid = currValid; } _currentFrame = currentFrame; _currentBb = output; return(output); }