新聞中心
??隨著linux應用的普及,多攝像頭的視頻同步捕捉在多領域發(fā)揮著重要作用。本文將介紹linux視頻多攝像頭數(shù)據的同步捕捉,實現(xiàn)步驟如下:

??首先,要安裝對應的攝像頭驅動和API,本文選擇使用libArgus接口來獲取攝像頭數(shù)據,實現(xiàn)視頻同步捕捉。首先,檢測開發(fā)平臺是否支持libargus:
#roslocate libargus
#find /usr/include/ -name "argus.h
??如果返回值不為NULL,則表明可以正確使用libargus,反之則需要更新驅動以及安裝對應的API支持;
??接著,linux多攝像頭的實現(xiàn)采用的是異步多路感測技術。因此,需要建立多個獨立的Capturing Session,以實現(xiàn)多路視頻捕捉:
//Initialize multiple sessions
//事先定義一個Session指針數(shù)組
for (int i = 0; i
Argus::UniqueObj captureSession(cameraProvider->createCaptureSession(device));
session[i] = captureSession.get();
}
??接下來,可以定義每個攝像機的Stream類,并分別初始化:
//Initialize Streams 定義多路的Stream
for (int i = 0; i
Argus::CaptureSession *session_i = session[i];
Argus::UniqueObj streamSettings(session_i->createOutputStreamSettings());
//Specify the preferrable resolution
streamSettings->setPixelFormat(Argus::PIXEL_FMT_YCbCr_420_888);
Argus::UniqueObj captureOutputStream(session_i->createOutputStream(streamSettings.get()));
stream[i] = captureOutputStream.get();
}
??最后,就可以利用上述建立的多路Stream,實現(xiàn)對每個獨立攝像頭的同步捕捉:
//Start Capturing
for (int i = 0; i
Argus::Status status(stream[i]->capture(uid[i]));
//Check capturing status
if(status != Argus::STATUS_OK)
{
//Error
}
}
??以上步驟完成后,linux多攝像頭視頻數(shù)據就可以正常捕捉,同時還可以根據不同應用場景,通過調整streamSetting,實現(xiàn)自定義分辨率、格式等設置;
??由此可見,Linux的多攝像頭同步捕捉,只需要進行相應的參數(shù)設置,通過libargus支持的接口及調用程序,就可以輕松實現(xiàn)。
成都創(chuàng)新互聯(lián)科技有限公司,經過多年的不懈努力,公司現(xiàn)已經成為一家專業(yè)從事IT產品開發(fā)和營銷公司。廣泛應用于計算機網絡、設計、SEO優(yōu)化、關鍵詞排名等多種行業(yè)!
分享標題:實現(xiàn)Linux多攝像頭同步捕捉(linux多攝像頭)
本文路徑:http://www.dlmjj.cn/article/dpepdsg.html


咨詢
建站咨詢
