三维摄像头sdk用户指南

sdk是深度摄像头通用sdk,他有一种可加性架构用来添加任何的深度摄像头。目前,它支持下列的深度摄像机:

  • Voxel-14
  • Voxel-D
  • OPT8140-CDK ("Haddock")
  • OPT8241-CDK ("Tintin")咱们主要用这一款

这一节提供SDK的详细说明文档。本节同时为sdk用户给予解释和试例应用程序。

第一个试例:深度摄像头捕捉

在本例中,我们将用到cmake编译系统。请先完成上一节的预备工作,并下载本例。 https://github.com/3dtof/voxelsdk-examples/releases

  • 首先,建立文件夹“DepthCapture”

·      现在,我们一起来定义一个cmake工程,用文本框建立文本文件CMakeLists.txt

·      为了在你自己的应用程序内使用三维sdk,你需要让cmke找到它并且为它做好头文件和lib库的准备。为了达到这一目的,你需要在你的文本文档内加入以下代码:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)

PROJECT(DepthCameraCapture)

FIND_PACKAGE(Voxel 0.1.0 REQUIRED)

 

·      三维使用了c++11(同c99一样是个规范)如果你用linux开发,gcc编译器需要你特别声明。

IF(CMAKE_SYSTEM_NAME STREQUAL"Linux")

  ADD_DEFINITIONS(-std=c++11)

ENDIF()

·      现在,让我们为应用程序定义可执行文件:

ADD_EXECUTABLE(DepthCapture DepthCapture.cpp)

where DepthCapture.cpp is the actualapplication source code using the Voxel SDK.

这里的“DepthCapture.cpp”是实际的使用三维SDK的应用源码。

·          Cmake 需要在DepthCapture可执行文件中使用三维SDK的头文件。所以,他还需要链接上三维SDKlib库。可以通过以下代码实现:

TARGET_INCLUDE_DIRECTORIES(DepthCapture PUBLIC ${VOXEL_INCLUDE_DIRS})

TARGET_LINK_LIBRARIES(DepthCapture ${VOXEL_LIBRARIES})

·          现在,让我们在编写DepthCapture.cpp的过程中使用三维SDK。先包括CameraSystem.h代码如下:

#include"CameraSystem.h"

usingnamespaceVoxel;

·          现在,在main()函数里。做以下的事情:

 
CameraSystem sys;

 

  // Get all valid detected devices

  const Vector<DevicePtr> &devices = sys.scan();

 

  DevicePtr toConnect;

 

  // Find out the device to connect

  std::cout << "Detected devices: " << std::endl;

  for(auto &d: devices)

  {

    std::cout << d->id() << std::endl;

 

    if(d->interfaceID() == Device::USB)

    {

      USBDevice &usb = (USBDevice &)*d;

 

      if(usb.vendorID() == vid && (serialNumber.size() == 0 || usb.serialNumber() ==serialNumber))

      {

        for(auto pid: pids)

          if(usb.productID() == pid)

            toConnect = d;

      }

    }

  }

 

  if(!toConnect)

  {

    std::cerr << "No valid device found for thespecified VID:PID:serialnumber" << std::endl;

    return -1;

  }

 

  // Now we have a device to connect to. So, connect to itand get a DepthCamera

  DepthCameraPtr depthCamera =sys.connect(toConnect);

 

  // Check to see whether depth camera is instantiated andis initialized

  if(!depthCamera)

  {

    std::cerr << "Could not load depth camera fordevice " <<toConnect->id() << std::endl;

    return -1;

  }

 

  if(!depthCamera->isInitialized())

  {

    std::cerr << "Depth camera not initialized fordevice " <<toConnect->id() << std::endl;

    return -1;

  }

 

  std::cout << "Successfully loaded depth camera fordevice " <<toConnect->id() << std::endl;

 

  // Register required type of callback as follows

  depthCamera->registerCallback(frametype, callbackfunction);

·          几种有效的帧类型(frametype)是:

DepthCamera::FRAME_RAW_FRAME_UNPROCESSED

DepthCamera::FRAME_RAW_FRAME_PROCESSED

DepthCamera::FRAME_DEPTH_FRAME

DepthCamera::FRAME_XYZI_POINT_CLOUD_FRAME

·          回调函数callbackfunction需要以下的参数:

voidcallbackfunction(DepthCamera &dc, const Frame &frame, DepthCamera::FrameTypec);

fram是要求一种基于回调类型(callback type)的帧类型,RawFrame, DepthFrame PointCloudFrame其中之一。如果回调类型是DepthCamera::FRAME_RAW_FRAME_PROCESSED,那么基于深度摄像头的类型,一种适当处理过的RawFrameTOF摄像头对应的ToFRawFrame

·          回调函数也可以被当作一种待定函数。

·          现在,所有的准备工作都做好好了,只需要开启捕获,做法如下:

  depthCamera->start();

返回值是一个布尔值,用来表示捕获是否开启。

·          想要停止捕获,只需要

  depthCamera->stop();

 

建立这个例子

现在,为了编译这个例子,需要在你的终端上做下面的事情。确保在你的文件夹CMakeLists.txtDepthCapture.cpp已经存在。

mkdir build

         cd build

cmake-gui .. ## Configure and generate requiredproject

现在,用如下代码编译你的示例

make # in Linux terminal

cmake --build . --target ALL_BUILD --config Release # in Windows terminal

Or, youcan open the generated Visual studio solution in case of Windows and compileand build it from there. In case of Linux, you can choose your favouritedevelopment environment - Eclipse, Code::Blocks, KDevelop4 and build it.

或者你也可以打开生成的vs解决方案,在windows平台下下编译和建立。如果用linux,你可以选自己喜欢的开发环境Eclipse,Code::Blocks, KDevelop4等来进行建立。

警告:注意所有库的debugrelease版本,一定要对应。

三维sdk的体系结构

就如我之前提到的一样,三维sdk已经添加深度摄像头插件支持,详细的说明请见下一节。

三维sdk API文档

见链接

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值