我的目标是,为Gstreamer应用程序编写GigEVision。
第一种方法是通过GigEVision API读取帧,然后通过gstreamer将其作为原始RTP / UDP流发送。
然后,任何gstreamer应用程序都可以接收此流。
以下是网络摄像头的最小示例:https://github.com/tik0/mat2gstreamer
这样做的缺点是,当通过UDP将包发送到下一个应用程序时,很多序列化和反序列化。
所以问题:是否可以使用opencv轻松编写gstreamer源码,以克服这些缺点? (或者您还有其他建议吗?)
问候
答案 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
即使有多次访问也能很好用。