我正在尝试让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在到达输出接收器之前处理帧?
答案 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支持。