我试图仅在实时网络摄像头上检测圆并在其上绘制圆

时间:2019-06-06 07:11:49

标签: javascript opencv shapes

我试图仅在实时网络摄像头视频上检测到圆圈,并试图在目标圆圈上绘制圆圈边界,但是现在我可以在随机目标上的输出上绘制圆圈,请帮助我获取圆圈目标。我正在使用javascript开发此代码,并使用opencv.js。这种随机检测功能也只能在其他任何位置检测视频底部。

function processVideo() {
try {
    if (!streaming) {
        // clean and stop.
        src.delete();
        dst.delete();
        dstC1.delete();
        dstC3.delete();

        return;
    }

    let begin = Date.now();
    // start processing.
    cap.read(src);
    cv.cvtColor(src, dst, cv.COLOR_RGBA2GRAY);
    cv.blur(dst, dstC1, ksize, anchor, cv.BORDER_DEFAULT); // blur the image to avoids noise 
    cv.Canny(dstC1, dstC1, 50, 100, 3, false); // black and white border 

    let contours = new cv.MatVector();
    let hierarchy = new cv.Mat();

    cv.findContours(dstC1, contours, hierarchy, cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE, offset = new cv.Point(0, 0));

    let cnt = contours.get(0);

    let contoursColor = new cv.Scalar(255, 255, 255);
    let circleColor = new cv.Scalar(255, 0, 0);
    let circle = cv.minEnclosingCircle(cnt);// this one for circle
    cv.drawContours(dstC1, contours, 0, contoursColor, 1, 8, hierarchy, 100);
    for (let i = 0; i < 4; i++) {
        cv.circle(dstC1, circle.center, circle.radius, circleColor, 3);

    }
    cv.imshow('canvasOutput', dstC1);

    let delay = 1000/FPS - (Date.now() - begin);
    setTimeout(processVideo, delay);
} catch (err) {
    utils.printError(err);
}
};

0 个答案:

没有答案