Передача видео из Javascript в OpenCV в Python - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь создать веб-приложение, которое распознает лица в прямой трансляции видео.Я написал код канала веб-камеры с помощью Javascript, как я хотел бы позже разместить приложение.

Код для получения канала с помощью Javascript

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

if (navigator.mediaDevices.getUserMedia) {
    navigator.mediaDevices.getUserMedia({video: true}).then(function(stream) {
      video.srcObject = stream;
  }).catch(function(err0r) {
      console.log("Something went wrong!");
  });
}

И мой код Python для открытия камеры иобнаружение лиц выглядит следующим образом:

import cv2

cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')

cam = cv2.VideoCapture(0)


while True:
    ret, frame = cam.read()
    frame = cv2.flip(frame, 1)

    if ret:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        faces = cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=3)

        for (x, y, w, h) in faces:
            cropped = cv2.resize(frame[y:y+h, x:x+w], (198,198))
            cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
            cv2.destroyAllWindows()

        cv2.imshow('Stream', frame)

Мой вопрос заключается в том, чтобы вместо открытия веб-камеры в Python я мог каким-то образом передать канал из Javascript в Python.Я думаю, мне придется изменить эту строку, чтобы включить код из Javascript

cam = cv2.VideoCapture(0)

Любая помощь приветствуется.Заранее спасибо

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете просто использовать OpenCV.js [https://docs.opencv.org/3.4/dd/d00/tutorial_js_video_display.html] для этого.Синтаксис на самом деле не так уж отличается.

Если вы действительно хотите использовать Python, вам нужно будет отправить запрос AJAX для видеопотока.Передайте его куда-нибудь и используйте в качестве источника для <video>.

...