c++ - 使用 opencv 进行实时流式传输和处理
问题描述
我很难弄清楚一个看似简单的问题:我的目标是将视频流发送到服务器,使用 opencv 对其进行处理,然后将处理后的提要发回以进行显示。我正在考虑使用 kafka 发送和接收提要,因为我已经有了一些经验。但是,这引发了一个问题:opencv 使用 VideoCapture 方法处理视频流,这与使用 Read 方法仅读取单个图像不同。如果我逐帧流式传输我的视频源,我是否能够将服务器上的源作为视频而不是单个图像处理?当我取回处理后的帧时,我可以再次将其显示为视频吗?
我确定我误解了一些概念,所以如果您需要进一步的解释,请告诉我。
解决方案
为迟到的回应道歉。我使用 Kafka 和 OpenCV 构建了一个带有基本分析(人脸检测)的直播项目。
发布者应用程序具有 OpenCV 以访问来自网络摄像头/网络摄像头/USB 摄像头的实时视频。就像您提到VideoCapture.read(frame)
的那样,将视频的连续帧/图像流作为 Mat 获取。然后将 Mat 转换为字符串 (JSON) 并将其发布到 Kafka。
然后,您可以根据它们的要求转换这些对象(为实时流应用程序转换为缓冲图像)或使用原始形式(用于人脸检测应用程序)。这将是理想的解决方案,因为它通过允许发布者应用程序为多个消费者生成数据来展示可重用性。
推荐阅读
- javascript - $watch 在通过 ng-repeat 迭代的单个对象中更改 ui-select
- html - 删除img宽度为100vw的水平滚动条的最佳解决方案?
- jenkins - 避免在某些文件更改时触发构建(例如 README.md)
- freeradius - 对不在半径响应中的变量进行分组
- android - 如何按意图启动三星bixby相机并接收图片描述
- python - 向数据框添加 nan 值会产生不可散列的类型:Python 中的“numpy.ndarray”
- c++ - 可变存储与不可变存储
- angular - 侧导航栏与组件重叠
- python - IF-ELSE 返回值输出不正确:使用比较运算符 [已解决:不推荐比较 'np.nan == np.nan']
- c - 从不可变字符串返回 const char**