用opencv写gstreamer源码

Write gstreamer source with opencv

我的目标是,编写 GigEVision 到 Gstreamer 应用程序。 第一种方法是通过 GigEVision API 读取帧,然后通过 gstreamer 将其作为原始 RTP/UDP 流发送。 然后,任何 gstreamer 应用程序都可以接收此流。 这是网络摄像头的最小示例:https://github.com/tik0/mat2gstreamer
这样做的缺点是,当通过 UDP 将包发送到下一个应用程序时,需要进行大量的序列化和反序列化。

所以问题是:是否可以使用 opencv 轻松编写 gstreamer source pad,以克服缺点? (或者您还有其他建议吗?)

问候

我想我已经为我的给定设置找到了最佳解决方案(s.t。数据在同一台 PC 上的应用程序之间交换)。 只需使用共享内存插件即可轻松进行数据交换。 所以我的 OpenCV pileline 看起来像:

appsrc ! shmsink socket-path=/tmp/foo sync=true wait-for-connection=false

任何其他接收器(在本例中为 gstreamer-1.0)看起来像:

gst-launch-1.0 shmsrc socket-path=/tmp/foo ! video/x-raw, format=BGR ,width=<myWidth>,height=<myHeight>,framerate=<myFps> ! videoconvert ! autovideosink

即使有多个访问也能很好地工作。