C++ 深度流示例代码-Depth Stream Viewer


  • 南宫NG·28



  • 南宫NG·28

    C++ 深度流示例代码-Depth Stream Viewer

    # 深度示例-DepthViewer

     

    功能描述:本示例主要演示了使用SDK获取深度数据并绘制显示、获取分辨率并选择进行设置、显示深度图像,并通过ESC_KEY键退出程序

    > 本示例基于C++ High Level API进行演示

     

    首先需要创建一个Pipeline,通过Pipeline可以很容易的打开和关闭多种类型的流并获取一组帧数据

    ob::Pipeline pipe;

     

    获取深度相机的所有流配置,包括流的分辨率,帧率,以及帧的格式

    //获取深度相机的所有流配置,包括流的分辨率,帧率,以及帧的格式
    auto profiles = pipe.getStreamProfileList(OB_SENSOR_DEPTH);

    std::shared_ptr<ob::VideoStreamProfile> depthProfile = nullptr;
    try{
        //根据指定的格式查找对应的Profile,优先查找Y16格式
        depthProfile = profiles->getVideoStreamProfile(640, 480, OB_FORMAT_Y16, 30);
    }catch(ob::Error &e){
        //没找到Y16格式后不匹配格式查找对应的Profile进行开流
        depthProfile = std::const_pointer_cast<ob::StreamProfile>(profiles->getProfile(OB_PROFILE_DEFAULT))->as<ob::VideoStreamProfile>();
    }

     

    通过创建Config来配置Pipeline要启用或者禁用哪些流,这里将启用深度流

    std::shared_ptr<ob::Config> config = std::make_shared<ob::Config>();
    config->enableStream(depthProfile);

     

    选择序列ID

    sequenceIdFilter.selectSequenceId(0);

     

    启动在Config中配置的流,如果不传参数,将启动默认配置启动流

    pipe.start(config);

     

    以阻塞的方式等待一帧数据,该帧是一个复合帧,里面包含配置里启用的所有流的帧数据,并设置帧的等待超时时间

    auto frameSet = pipe.waitForFrames(100);    //设置等待时间为100ms

     

    停止Pipeline,将不再产生帧数据

    pipe.stop();

    最终的深度图显示如下

    image.png

    程序正常退出之后资源将会自动释放


    友情链接: