GCP Jupyter笔记本中的网络摄像头

问题描述 投票:0回答:1

我正在尝试使用GCP Jupyter笔记本电脑进行一些实时网络摄像头视频处理。我已经尝试了一些解决方案,包括以下使用openCV的解决方案,但是openCV根本不会阅读它。我认为问题是首先将网络摄像头视频提要流式传输到虚拟机中,但我不知道该怎么办。

是否有用于此的小部件?附言还尝试了ipywidgets ipywebrtc,但没有运气。

原因是我这样做是因为我的笔记本电脑不支持我的程序需要的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))));
python google-cloud-platform jupyter webcam
1个回答
0
投票

您的问题确实是如何使网络摄像头视频提要流式传输到虚拟机中。 GCP Jupyter笔记本在后端具有VM实例,因此,关键是如何将视频数据流传输到后端VM。

要解决此问题,您需要做两件事:

第一个是您计算机中的服务器,用于从网络摄像头获取视频。我找到了这个github回购[1]以创建RTSP服务器。

第二个方法是进入GCP中的VM实例,并配置一个RTSP客户端,该客户端侦听您要发送视频的服务器端口。然后,您需要在笔记本电脑上读取来自服务器(笔记本电脑)的数据。

还有其他方法,例如,如果您的网络摄像头是IP摄像机(如果不是,您也可以这样做),则可以通过http发送视频,并且可以在虚拟实例中创建http服务器,然后将视频流推送(我不知道是否实时)。我一直在调查opencv是否已经实现了这一点,但是我不确定。我会再搜索一下以确认这一点。

考虑到从网络摄像头到AI笔记本接收实时视频并非易事。直播视频是必须的吗?

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

© www.soinside.com 2019 - 2024. All rights reserved.