使用 OpenCV 从 Websocket 流中捕获图像

Posted

技术标签:

【中文标题】使用 OpenCV 从 Websocket 流中捕获图像【英文标题】:Using OpenCV to capture images from the Websocket stream 【发布时间】:2020-05-30 00:10:14 【问题描述】:

我有以下设置:

    从客户端接收视频流的节点服务器。客户端可以通过 ws://1.2.3.4:8888 的 WebSocket 查看视频流。

    现在,我想使用 OpenCV (Python) 从该流中捕获帧。我尝试使用 cap = cv2.VideoCapture('ws://1.2.3.4:8888/') 但它不起作用。给我一个错误(注意:套接字有效;我尝试在画布上显示流)。

我的问题是,有什么方法可以让我(在 Python 中)逐帧读取通过 WebSocket 可用的流?最好使用 OpenCV Python?

我尝试了很多东西,但都没有成功。

下面是让我连接到流的代码,但是如何从该流中捕获图像。

提前感谢您的帮助!

import asyncio
import pathlib
import ssl
import websockets

# ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
# # localhost_pem = pathlib.Path(__file__).with_name("localhost.pem")
# ssl_context.load_verify_locations(localhost_pem)

async def hello():
    uri = "ws://192.168.0.102:8080"
    async with websockets.connect(uri) as websocket:
        print('hello')

asyncio.get_event_loop().run_until_complete(hello())

【问题讨论】:

你能提供一个最小的工作示例吗? 【参考方案1】:

您可能会发现我使用 Python 提供实时网络摄像头提要的简约示例很有用:

https://github.com/vmlaker/hello-websocket

【讨论】:

以上是关于使用 OpenCV 从 Websocket 流中捕获图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenCV 以您想要的分辨率从 DVR 读取图像?

OpenCv,获取图片信息

有没有使用 OpenCV 的 imdecode 的替代方法?太慢了

OpenCV-Python:如何从实时视频流中获取最新帧或跳过旧帧

OpenCV计算机视觉处理代码不起作用

APICloud+jetson nano+websocket +OpenCV图传APP