将处理后的帧从openCV流传输到IP

时间:2019-11-07 08:59:07

标签: opencv image-processing video-streaming gstreamer

我已经在Visual Studio 10中使用OpenCV和C ++开发了一个程序。 它正在从摄像机实时处理帧。 作为输出,我处理了IplImages,并使用cvShowImage作为视频显示在显示屏上。 现在,我想将这些帧/视频流式传输到IP地址,以便用户可以使用浏览器(mjpeg)或在VLC(H.264)中看到它。我做了一些研究,并了解了GStreamer。但是它不适用于VS10,并且所有链接均已失效。

在不重建OpenCV库的情况下还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

GStreamer可用于Visual Studio 2019,并且适用于opencv 4.2。 这很容易,但是错误的余地很大。 Gstreamer管道工程。扩展说明可在此处Tutorial中找到。

Gstreamer result

我用过3) -OpenCV源代码opencv-4.2.0 -OpenCV源代码opencv_contrib-4.2.0 -Cmake 3.17发布候选3,这很重要。 我将开发和运行时安装程序用于MSVC GStreamer Gstreamer 1.16.2运行时安装程序 Gstreamer 1.16.2开发安装程序 what to download 从源代码和OpenCV安装生成OpenCV时,通常遵循以下步骤。此外,在cmake配置期间需要添加这些资源。
Gstreamer Cmake opencv config

现在在Visual Studio 2019中构建由CMAKE生成的OpenCV项目。最后一个重要的事情是设置环境变量以查找GStreamer运行时。进入系统变量路径:添加

  • xxx \ 1.0 \ x86_64 \ bin
  • xxx \ 1.0 \ x86_64 \ lib
  • xxx \ 1.0 \ x86_64 \ lib \ gstreamer-1.0 Environmental variables

您需要将VideoWriter与gstreamer Pipeline一起使用。

VideoWriter writer( "appsrc ! videoconvert ! videoscale ! video/x-raw,width=320,height=240 ! theoraenc ! oggmux ! tcpserversink host=192.168.0.116 port=8080 recover-policy=keyframe sync-method=latest-keyframe unit-format=buffers units-max=1 buffers-max=0 sync=true ",
        0,
        5,
        Size(320, 240),
        true);