# 深度示例-DepthViewer
功能描述:本示例主要演示了使用SDK獲取深度數(shù)據(jù)并繪制顯示、獲取分辨率并選擇進(jìn)行設(shè)置、顯示深度圖像,并通過(guò)ESC_KEY鍵退出程序
> 本示例基于C++ High Level API進(jìn)行演示
首先需要?jiǎng)?chuàng)建一個(gè)Pipeline,通過(guò)Pipeline可以很容易的打開(kāi)和關(guān)閉多種類型的流并獲取一組幀數(shù)據(jù)
ob::Pipeline pipe;
獲取深度相機(jī)的所有流配置,包括流的分辨率,幀率,以及幀的格式
//獲取深度相機(jī)的所有流配置,包括流的分辨率,幀率,以及幀的格式
auto profiles = pipe.getStreamProfileList(OB_SENSOR_DEPTH);
std::shared_ptr<ob::VideoStreamProfile> depthProfile = nullptr;
try{
//根據(jù)指定的格式查找對(duì)應(yīng)的Profile,優(yōu)先查找Y16格式
depthProfile = profiles->getVideoStreamProfile(640, 480, OB_FORMAT_Y16, 30);
}catch(ob::Error &e){
//沒(méi)找到Y(jié)16格式后不匹配格式查找對(duì)應(yīng)的Profile進(jìn)行開(kāi)流
depthProfile = std::const_pointer_cast<ob::StreamProfile>(profiles->getProfile(OB_PROFILE_DEFAULT))->as<ob::VideoStreamProfile>();
}
通過(guò)創(chuàng)建Config來(lái)配置Pipeline要啟用或者禁用哪些流,這里將啟用深度流
std::shared_ptr<ob::Config> config = std::make_shared<ob::Config>();
config->enableStream(depthProfile);
選擇序列ID
sequenceIdFilter.selectSequenceId(0);
啟動(dòng)在Config中配置的流,如果不傳參數(shù),將啟動(dòng)默認(rèn)配置啟動(dòng)流
pipe.start(config);
以阻塞的方式等待一幀數(shù)據(jù),該幀是一個(gè)復(fù)合幀,里面包含配置里啟用的所有流的幀數(shù)據(jù),并設(shè)置幀的等待超時(shí)時(shí)間
auto frameSet = pipe.waitForFrames(100); //設(shè)置等待時(shí)間為100ms
停止Pipeline,將不再產(chǎn)生幀數(shù)據(jù)
pipe.stop();
最終的深度圖顯示如下

程序正常退出之后資源將會(huì)自動(dòng)釋放