实现Linux多摄像头同步捕捉(linux多摄像头)

  随着linux应用的普及,多摄像头的视频同步捕捉在多领域发挥着重要作用。本文将介绍linux视频多摄像头数据的同步捕捉,实现步骤如下:

  首先,要安装对应的摄像头驱动和API,本文选择使用libargus接口来获取摄像头数据,实现视频同步捕捉。首先,检测开发平台是否支持libargus:

#roslocate libargus
#find /usr/include/ -name "argus.h

  如果返回值不为NULL,则表明可以正确使用libargus,反之则需要更新驱动以及安装对应的API支持;

  接着,linux多摄像头的实现采用的是异步多路感测技术。因此,需要建立多个独立的Capturing Session,以实现多路视频捕捉:

//Initialize multiple sessions
//事先定义一个Session指针数组
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,实现对每个独立摄像头的同步捕捉:

//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多摄像头视频数据就可以正常捕捉,同时还可以根据不同应用场景,通过调整streamSetting,实现自定义分辨率、格式等设置;

  由此可见,Linux的多摄像头同步捕捉,只需要进行相应的参数设置,通过libargus支持的接口及调用程序,就可以轻松实现。


数据运维技术 » 实现Linux多摄像头同步捕捉(linux多摄像头)