开发指南¶
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);