這是我寫的呼叫并顯示一個攝像頭的代碼,如何得到每幀影像資料?(得到資料用作Oencv進行處理),希望能得到具體方法或者代碼參照,我是剛接觸gstreamer,感激不盡。
#include <gst/gst.h>
#define Device_path_1 "/dev/video0"
//#define Device_path_2 "/dev/video1"
#define Camera_caps "video/x-raw-yuv,width=(int)1920,height=(int)1080,framerate=(fraction)30/1"
int main(int argc, char *argv[])
{
GstElement *camera_source_1,*convert_1,*sink_1,*pipeline;
GMainLoop *loop;
//初始化GST
gst_init(&argc,&argv);
//創建需要的elements
camera_source_1 = gst_element_factory_make("v4l2src","camera_source_1");
convert_1 = gst_element_factory_make("ffmpegcolorspace","1_csp");
sink_1 = gst_element_factory_make("ximagesink","sink_1");
//創建pipeline
pipeline = gst_pipeline_new("camera_pipeline");
//出錯處理
if(!pipeline || !camera_source_1 || !sink_1 || !convert_1){
g_printerr("Not all elements could be created !\n");
return -1;
}
//配置 elements
g_object_set(G_OBJECT(camera_source_1),"device",Device_path_1,NULL);
//link all elements
gst_bin_add_many(GST_BIN(pipeline),camera_source_1,convert_1,sink_1,NULL);
gst_element_link_many(camera_source_1,convert_1,sink_1,NULL);
gst_element_set_state(pipeline,GST_STATE_PLAYING);
loop = g_main_loop_new(NULL,FALSE);
g_main_loop_run(loop);
g_print("stopping sender pipeline\n");
gst_element_set_state(pipeline,GST_STATE_NULL);
return 0;
}
uj5u.com熱心網友回復:
百度搜相關關鍵字。uj5u.com熱心網友回復:
趙4老師您好,我查過相關的資料,也通過source Insight 查看原始碼,沒有找到比較好的模板,遇到幾個問題uj5u.com熱心網友回復:
問題:1.appsrc 進行配置源的時候,不知道怎么加入設備路徑例如/dev/video0uj5u.com熱心網友回復:
問題:2.如何讓buffer去接收到資料uj5u.com熱心網友回復:
不要做A語言代碼修改為B語言代碼的無用功。也不要做用A語言代碼直接呼叫B語言代碼庫這樣復雜、這樣容易出錯的傻事。
只需讓A、B語言代碼的輸入輸出重定向到文本檔案,或修改A、B語言代碼讓其通過文本檔案輸入輸出。
即可很方便地讓A、B兩種語言之間協調作業。
比如:
A將請求資料寫到檔案a.txt,寫完后改名為aa.txt
B發現aa.txt存在時,讀取其內容,呼叫相應功能,將結果寫到檔案b.txt,寫完后洗掉aa.txt,改名為bb.txt
A發現bb.txt存在時,讀取其內容,讀完后洗掉bb.txt
以上A可以替換為任何一種開發語言或開發環境,B可以替換為任何一種與A不同的開發語言或開發環境。
除非A或B不支持判斷檔案是否存在、檔案讀寫和檔案更名。
但是誰又能舉出不支持判斷檔案是否存在、檔案讀寫和檔案更名的開發語言或開發環境呢?
可以將臨時檔案放在RamDisk上提高效率減少磨損磁盤。
資料的結構很復雜的話,文本檔案的格式問題可參考json或xml
共享臨時文本檔案這種行程之間的通訊方法相比其它方法的優點有很多,下面僅列出我現在能想到的:
·行程之間松耦合
·行程可在同一臺機器上,也可跨機,跨作業系統,跨硬體平臺,甚至跨國。
·方便除錯和監視,只需讓第三方或人工查看該臨時文本檔案即可。
·方便在線開關服務,只需洗掉或創建該臨時文本檔案即可。
·方便實作分布式和負載均衡。
·方便佇列化提供服務,而且幾乎不可能發生佇列滿的情況(除非硬碟空間滿)
·……
“跨語言、跨機,跨作業系統,跨硬體平臺,跨國,跨*.*的”苦海無邊,
回頭是“使用共享純文本檔案進行資訊交流”的岸!
uj5u.com熱心網友回復:
為什么要這樣用 opencv自帶gstreamer 直接用它的就可以啊 VideoCapture加個pipeline 解碼效果比之前好太多uj5u.com熱心網友回復:
博主你設定的Camera_caps好像并沒有用到啊轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/76825.html
標籤:圖形處理/算法
上一篇:求助:請問網抓后的資料如何切割?
下一篇:tetgen四面體剖分
