将一些OpenCV处理添加到gstreamer视频流

时间:2011-01-14 02:09:10

标签: python opencv gstreamer

我正在尝试让OpenCV在gstreamer管道中间处理一个帧。

我有一个gstreamer管道生成流,将其发送到appsink以获取OpenCV代码:

v4l2src ! ffmpegcolorspace ! jpegenc ! appsink name=sink

另一个管道从appsrc(OpenCV向其发送数据)获取它并在屏幕上输出:

appsrc name=src ! jpegdec ! xvimagesink

我在接收器上使用pull-buffer请求打开每个帧并使用OpenCV处理它,然后在src上使用push-buffer。我正在用Python做这一切。

出于某种原因,这似乎不起作用(分段错误)。

但我并没有真正想要解决它;无论如何,它的效率非常低。我只是想知道是否有更好的方法让OpenCV在到达输出接收器之前处理帧?

2 个答案:

答案 0 :(得分:2)

你试过gst-opencv吗?它提供了几个opencv原语作为gstreamer插件。

编辑:似乎已合并到gst-plugins-bad,上面的链接已过时。

答案 1 :(得分:1)

我知道自你的原始问题已经过去了几年,但仅仅为了记录,OpenCv可以直接打开Gstreamer管道。有关示例,请参阅Using custom camera in OpenCV (via GStreamer)中的(自我)答案。

顺便说一下,OpenCv 3.0(master branch)实际上集成了gstreamer 1.0支持。