首页 > 解决方案 > 使用 opencv 进行实时流式传输和处理

问题描述

我很难弄清楚一个看似简单的问题:我的目标是将视频流发送到服务器,使用 opencv 对其进行处理,然后将处理后的提要发回以进行显示。我正在考虑使用 kafka 发送和接收提要,因为我已经有了一些经验。但是,这引发了一个问题:opencv 使用 VideoCapture 方法处理视频流,这与使用 Read 方法仅读取单个图像不同。如果我逐帧流式传输我的视频源,我是否能够将服务器上的源作为视频而不是单个图像处理?当我取回处理后的帧时,我可以再次将其显示为视频吗?

我确定我误解了一些概念,所以如果您需要进一步的解释,请告诉我。

标签: c++opencvimage-processingapache-kafkavideo-streaming

解决方案


为迟到的回应道歉。我使用 Kafka 和 OpenCV 构建了一个带有基本分析(人脸检测)的直播项目。

发布者应用程序具有 OpenCV 以访问来自网络摄像头/网络摄像头/USB 摄像头的实时视频。就像您提到VideoCapture.read(frame)的那样,将视频的连续帧/图像流作为 Mat 获取。然后将 Mat 转换为字符串 (JSON) 并将其发布到 Kafka。

然后,您可以根据它们的要求转换这些对象(为实时流应用程序转换为缓冲图像)或使用原始形式(用于人脸检测应用程序)。这将是理想的解决方案,因为它通过允许发布者应用程序为多个消费者生成数据来展示可重用性。


推荐阅读