SmartToF SDK是TOF 3D相机的通用开发套件,具有下面所列功能:
- 支持深度、灰度数据采集与显示
- 支持采集数据自动校准
- 支持点云显示
目前SmartToF SDK支持以下型号的TOF 3D相机模组:
SmartToF SDK主要包括以下模块:
- DMCAM核心C库及语言扩展
- SmartToF 开发者工具
- SmartTofViewer
- SmartTofCli
- SmartTofAnalyzer
SmartToF SDK支持windows和linux等多种操作系统,同时提供多种参考样例方便用户二次开发,包括:
- C/C++样例
- python样例
- ROS样例
- android样例
SmartToF SDK的各个平台支持情况:
|
Windows |
Linux |
Android |
核心API C库 |
√ |
√ |
√ |
Python |
√ |
√ |
|
Java |
√ |
|
√ |
Ros |
|
√ |
|
C# |
|
|
|
Matlab |
|
|
|
usbdriver |
√ |
√ |
√ |
SmartTofAnalyzer |
√ |
√ |
|
SmartTofCli |
√ |
√ |
|
SmartToFViewer |
√ |
√ |
√ |
SmartToF SDK的使用需要进行所在系统的环境配置,包括
- windows下的安装配置,详细步骤见(参考链接)
- linux下的安装配置,详细步骤见(参考链接)
SmartToF SDK中所有相关结构体定义和函数声明都位于lib\include文件夹下的dmcam.h中,例如windows下在SDK/windows/dmcam/lib/include下,里面对函数的主要功能和参数都有详细说明。
/*初始化*/
dmcam_init(NULL);
...
/*打开设备*/
dev = dmcam_dev_open(NULL);//打开第一个设备
/*设置采集缓存*/
dmcam_cap_set_frame_buffer(dev,NULL,FRAME_SIZE*FRAME_BUF_FCNT);
...
/*开始采集*/
dmcam_cap_start(dev);//开始采集
/*获得采集数据*/
fr_cnt = dmcam_cap_get_frames(dev,20,fbuf,FRAME_SIZE*20,&fbuf_info);//采集20帧数据
/*获得深度数据*/
dmcam_frame_get_distance(dev,dist,dist_len,fbuf,fbuf_info.frame_info.frame_size,&fbuf_info.frame_info);//解析出一帧深度数据
/*获得灰度数据*/
dmcam_frame_get_gray(dev,gray,gray_len,fbuf,fbuf_info.frame_info.frame_size,&fbuf_info.frame_info);//解析出一帧灰度数据
/*获取点云数据*/
dmcam_frame_get_pcl(dev,pcl,pcl_len,dist,dist_len,img_w,img_h,NULL);//将转换的深度数据转换成点云数据
/*停止采集*/
dmcam_cap_stop(dev);
...
dmcam_dev_close(dev);
dmcam_uninit();
dmcam_init(const char *log_fname); //初始化
参数 |
描述 |
log_fname |
日志文件名,如果为NULL,默认为dmcam_YYYYMMDD.log |
dmcam_dev_list(dmcam_dev_t *dev_list,int dev_list_num);
参数 |
描述 |
dev_list |
连接设备表 |
dev_list_num |
设备表大小 |
dmcam_dev_open(dmcam_dev_t *dev);
dmcam_param_batch_set(dmcam_dev_t *dev, const dmcam_param_item_t *param_items, int item_cnt);
参数 |
描述 |
dev |
指定设备 |
param_items |
设置的参数值 |
item_cnt |
设置的参数个数 |
dmcam_cap_set_frame_buffer(dmcam_dev_t *dev, uint8_t *frame_buf, uint32_t frame_buf_size);
参数 |
描述 |
dev |
指定设备 |
frame_buf |
缓存数组 |
frame_buf_size |
缓存数组大小 |
dmcam_cap_set_callback_on_error(dmcam_dev_t *dev, dmcam_cap_err_f cb);
dmcam_cap_get_frames(dmcam_dev_t *dev, uint32_t frame_num, uint8_t *frame_data, uint32_t frame_dlen, dmcam_frame_t *first_frame_info);
参数 |
描述 |
dev |
指定设备 |
frame_num |
要采集的帧数 |
frame_data |
采集的帧数据 |
frame_dlen |
帧数据缓存大小 |
first_frame_info |
第一帧数据 |
dmcam_frame_get_distance(dmcam_dev_t *dev, float *dst, int dst_len,uint8_t *src, int src_len, const dmcam_frame_info_t *finfo);
参数 |
描述 |
dev |
指定设备 |
dst |
转换出的深度数据 |
dst_len |
深度数据缓存大小 |
src |
采集的原始数据 |
src_len |
原始数据大小 |
finfo |
原始帧信息 |
dmcam_frame_get_gray(dmcam_dev_t *dev, float *dst, int dst_len,
uint8_t *src, int src_len, const dmcam_frame_info_t *finfo);
参数 |
描述 |
dev |
指定设备 |
dst |
转换出的灰度数据 |
dst_len |
灰度数据缓存大小 |
src |
采集的原始数据 |
src_len |
原始数据大小 |
finfo |
原始帧信息 |
dmcam_frame_get_pcl(dmcam_dev_t * dev, float *pcl, int pcl_len,
const float *dist, int dist_len, int img_w, int img_h, const dmcam_camera_para_t *p_cam_param);
参数 |
描述 |
dev |
指定设备 |
pcl |
输出的点云数据,每三个元素构成一点的坐标 |
dist |
输入图像的深度数据 |
dist_len |
输入图像深度数据的长度 |
img_w |
深度图像的宽度 |
img_h |
深度图像的高度 |
p_cam_param |
相机内参 |
SmartToF SDK提供的主要样例如下:
- C样例:参见(C样例链接)
- sample_capture_frames.c:展示采集数据
- sample_set_param.c:展示进行参数的设置
- sample_filter.c:展示校准数据
- python样例:参见(python样例链接)
- test_gui_pyQtGraph.py:采集数据显示
- test_gui_pygame.py:采集数据显示
- test_param.py:展示参数设置和读取
- test_raw:展示采集数据
- java样例:参见(java样例链接)
- testBasic.java:java采集样例
- testBasicUi.java:java采集显示样例
- ROS样例:参见(ros样例链接)