Получите видео с веб-камеры в формате HTML и отправьте на сервер flask через socketio - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь захватить видео с веб-камеры на стороне клиента и отправить кадры на сервер для обработки. Я новичок ie в JS и у меня возникли некоторые проблемы. Я пытался использовать OpenCV. js для получения данных, но я не понимал, как их получить, в Python мы можем сделать

cap = cv2.VideoCapture(0)
ret, frame = cap.read()

, а кадр представляет собой 2d-массив с изображение, но как я могу получить каждый кадр (как 2d массив) для отправки с использованием OpenCV. js?

У меня есть этот код на стороне клиента:

<script type="text/javascript">
function onOpenCvReady() {
    cv['onRuntimeInitialized'] = () => {
        var socket = io('http://localhost:5000');

        socket.on('connect', function () {
            console.log("Connected...!", socket.connected)
        });

        const video = document.querySelector("#videoElement");

        video.width = 500;
        video.height = 400;

        if (navigator.mediaDevices.getUserMedia) {
            navigator.mediaDevices.getUserMedia({ video: true })
                .then(function (stream) {
                    video.srcObject = stream;
                    video.play();

                })
                .catch(function (err0r) {
                    console.log(err0r)
                    console.log("Something went wrong!");
                });
        }

                    let src = new cv.Mat(video.height, video.width, cv.CV_8UC4);
                    let cap = new cv.VideoCapture(video);

                    const FPS = 15;
                    function processVideo() {

                        let begin = Date.now();
                        cap.read(src);

                        handle_socket(src['data']);

                        // schedule next one.
                        let delay = 1000 / FPS - (Date.now() - begin);
                        setTimeout(processVideo, delay);
                    }
                    // schedule first one.
                    setTimeout(processVideo, 0);

        function handle_socket(src) {

            socket.emit('event', { info: 'I\'m connected!', data: src });

        }

    }
}

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...