用opencv写gstreamer源代码

时间:2016-08-30 01:10:25

标签: c++ opencv gstreamer

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

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

问候

1 个答案:

答案 0 :(得分:0)

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

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

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

startdate = Format(Sheets("sheet1").Range("B2").Value, "####")
enddate = Format(Sheets("sheet1").Range("B3").Value, "####")

Set conn = New ADODB.connection
Set rs = New ADODB.Recordset
connection = "provider = sqloledb ; data source = &user; initial catalog = &data ; integrated security = sspi ; "
conn.Open connection
Set rs = conn.Execute("select * from sale_table where datetime   >= " & startdate & " and datetime <=  " & enddate & "")

If Not rs.EOF Then
    Sheets(1).Range("I12").CopyFromRecordset rs
Else
    MsgBox ("no record")
End If 

即使有多次访问也能很好用。