Я пытаюсь обнаружить круг только в режиме реального времени веб-камеры и нарисовать круг на нем - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь определить круг только на видео с веб-камеры в реальном времени и пытаюсь нарисовать границу круга на выбранном круге, но сейчас я могу нарисовать круг при выводе на случайную цель, пожалуйста, помогите мне получить цель круга.Я разрабатываю этот код в 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);
}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...