I am using Backgroundsubstraction method to human body extraction.When it comes to detect moving bodies this algorithm work well but if the body does not move, this algorithm does not work.How can i solve this problem?What can i add this algorithm?
For example If we’re watching anyone comes in to the park, then this person is a new foreground object. But should it stay foreground forever? In areas where there was no foreground object a given(a foreground object does not move but still there) , I could continue updating our background model.How can i keep unmoving person to the extracting foreground?
My foreground extraction code:
let video = document.getElementById('videoInput');
let cap = new cv.VideoCapture(video);
let frame = new cv.Mat(video.height, video.width, cv.CV_8UC4);
let fgmask = new cv.Mat(video.height, video.width, cv.CV_8UC1);
let fgbg = new cv.BackgroundSubtractorMOG2(500, 16, true);
const FPS = 30;
function processVideo() {
    try {
        if (!streaming) {
            // clean and stop.
            frame.delete(); fgmask.delete(); fgbg.delete();
            return;
        }
        let begin = Date.now();
        // start processing.
        cap.read(frame);
        fgbg.apply(frame, fgmask);
        frame.copyTo(fgmask, fgmask);
        cv.imshow('canvasOutput', fgmask);
        // schedule the next one.
        let delay = 1000/FPS - (Date.now() - begin);
        setTimeout(processVideo, delay);
    } catch (err) {
        utils.printError(err);
    }
};
// schedule the first one.
setTimeout(processVideo, 0);
 
  
 