开发指南

Capture类是Image类的集合,类中定义了很多接口,可以设置和获取各种Image. Frame类是Capture类的集合,除了可以存放Capture,还可以用于设置和获取SDK处理结果。 Scanner类用于处理图片流,并挑选关键帧,输入是Capture,输出是Frame,输出的Frame中既保存了capture中的图片数据,也包含frc_keyframe_t中的关键帧非图片数据。

重建需要首先对数据进行解析,对每个关键帧,将其图片数据封装在Capture对象里,将其非图片数据封装在frc_keyframe_t结构体中。 将这两类数据一起封装进Frame对象,循环调用AddFrame函数,由Builder对象读入,当所有帧读取完成后再调用Process函数进行处理,并将结果保存到frc_build_result_t中。

Scanner相关的函数在人脸检测阶段(即scan_flag置为FRC_SCAN_FLAG_INIT)仅反馈人脸检测框(rect)和人脸状态(status),启动正式扫描(即scan_flag置为FRC_SCAN_FLAG_START)后进入关键帧筛选阶段,会增加对关键帧相关参数的反馈(如pose)。

Image/Capture class

涉及应用层如何将设备采集的数据流封装成SDK所需数据结构

第一步、 将设备获取的rgb和depth数据流封装在Image类里

unsigned char* color_buffer;   //设备获取到的rgb流
unsigned char* depth_buffer;   //设备获取到的depth流

int img_width = 480;
int img_height = 640;

Image rgb_image;
Image depth_image;
rgb_image.create(FRC_IMAGE_FORMAT_COLOR_RGB24, img_width, img_height, 0, color_buffer);
depth_image.create(FRC_IMAGE_FORMAT_DEPTH16, img_width, img_height, 0, depth_buffer);

第二步、将Image对象封装在Capture类中

Capture capture;
capture.create();
capture.setColorImage(rgb_image);
capture.setDepthImage(depth_image);