Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

cv.BackgroundSubtractorMOG() doesn't work on opencv.js

Hello guys.I want to use BackgroundSubtractorMOG() on my opencv .js project but cv.BackgroundSubtractorMOG() doesn't work on my javascript code.I get following error:

BindingError: BackgroundSubtractor has no accessible constructor

My 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)



        let M = cv.Mat.eye(3, 3, cv.CV_32FC1);
        let anchor = new cv.Point(-1, -1);
        cv.filter2D(fgmask, fgmask, cv.CV_8U, M, anchor, 0, cv.BORDER_DEFAULT);


        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);

cv.BackgroundSubtractorMOG() doesn't work on opencv.js

Hello guys.I want to use BackgroundSubtractorMOG() on my opencv .js project but cv.BackgroundSubtractorMOG() doesn't work on my javascript code.I get following error:

BindingError: BackgroundSubtractor has no accessible constructor

My 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, cv.BackgroundSubtractorMOG(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)



        let M = cv.Mat.eye(3, 3, cv.CV_32FC1);
        let anchor = new cv.Point(-1, -1);
        cv.filter2D(fgmask, fgmask, cv.CV_8U, M, anchor, 0, cv.BORDER_DEFAULT);


        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);