Веб-камера в ноутбуке GCP Jupyter - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь обработать видео с веб-камеры в реальном времени с помощью ноутбука GCP Jupyter. Я пробовал некоторые решения, включая приведенное ниже, где я использую openCV, но openCV вообще его не читает. Я думаю, что проблема заключается в том, чтобы сначала передавать поток видео с веб-камеры на виртуальную машину, что я не могу понять, как это сделать.

Есть ли для этого виджет? PS Также безуспешно пробовал ipywidgets ipywebrt c.

Причина, по которой я это делаю, заключается в том, что мой ноутбук не поддерживает CUDA, который мне нужен для моей программы.

import cv2
from IPython.display import clear_output
import time
import PIL.Image
from io import StringIO
import IPython.display
import numpy as np
from IPython.display import HTML, Audio
from base64 import b64decode
import numpy as np
import io

VIDEO_HTML = """
<video autoplay
 width=%d height=%d style='cursor: pointer;'></video>
<script>

var video = document.querySelector('video')

navigator.mediaDevices.getUserMedia({ video: true })
  .then(stream=> video.srcObject = stream)

var data = new Promise(resolve=>{
  video.onclick = ()=>{
    var canvas = document.createElement('canvas')
    var [w,h] = [video.offsetWidth, video.offsetHeight]
    canvas.width = w
    canvas.height = h
    canvas.getContext('2d')
          .drawImage(video, 0, 0, w, h)
    video.srcObject.getVideoTracks()[0].stop()
    video.replaceWith(canvas)
    resolve(canvas.toDataURL('image/jpeg', %f))
  }
})
</script>
"""

#Code doesnt work
cap = cv2.VideoCapture(display(HTML(VIDEO_HTML % (256,256,0.8))))
cap1 = VideoRecorder(stream=display(HTML(VIDEO_HTML % (256,256,0.8))));

1 Ответ

0 голосов
/ 15 апреля 2020

Ваша проблема действительно в том, как заставить поток видео с веб-камеры транслироваться на виртуальную машину. Ноутбуки GCP Jupyter имеют экземпляр виртуальной машины в своем бэкэнде, поэтому дело в том, как перенести поток видеоданных на бэкэнд-виртуальную машину.

Чтобы решить эту проблему, вам нужно сделать две вещи:

Первый - это сервер на вашем компьютере, который берет видео с веб-камеры. Я нашел этот репозиторий github [1] для создания сервера RTSP.

Второй - go в экземпляр виртуальной машины в GCP и настройка клиента RTSP, который прослушивает порт вашего сервера, на который отправляется видео , Затем в вашей записной книжке вам нужно будет прочитать эти данные, поступающие с сервера (вашего ноутбука).

Есть и другие способы сделать это, например, если ваша веб-камера является IP-камерой (если это не так, вы не можете также сделайте это), вы можете отправить видео по http, и, создав в своем виртуальном экземпляре http-сервер, вы сможете воспроизвести потоковое видео там sh (не знаю, в режиме реального времени). Я расследовал, реализовал ли opencv это, но я не уверен. Я буду искать немного больше, чтобы проверить это.

Примите во внимание, что получение живого видео с вашей веб-камеры на AI-ноутбук не будет легкой задачей. Обязательно ли иметь живое видео?

[1] https://github.com/revmischa/rtsp-server

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