所有文档

          人脸识别

          3D肢体关键点SDK-原生iOS

          1 简介

          当前3D肢体SDK共计输出16个人体关键点,点位顺序以MPII顺序为参考,具体点位顺序0-右脚踝、1-右膝、2-右股、3-左股、4-左膝、5-左脚踝、6-盆骨、7-胸部、8-脖子、9-头部、10-右手腕、11-右手肘、12-右肩、13-左肩、14-左手肘、15-左手腕。

          当前SDK输出为人体16个关键点的3D归一化坐标,其中x,y为屏幕坐标,z为相对于人体根节点(人为规定关键点6为根节点)的相对深度。

          2 快速入门

          2.1 支持的系统和硬件版本

          • 系统:支持 iOS12.到iOS13.系统。
          • 硬件要求:要求设备上有相机模块。
          • 网络:支持WIFI及移动网络,移动网络支持使用NET网关及WAP网关(CMWAP、CTWAP、UNIWAP、3GWAP)

          2.2 开发包说明

          Baidu-AR-3D-HumanPose-iOS-SDK.zip
              |- sdk     // SDK
              |- pdf     // 说明文档
              |- Demo    // 调用示例Demo

          3 SDK集成步骤

          第1步:添加授权文件

          您可以通过“合作咨询”联系相关接口人申请授权。

          • 确认LICENSE文件dumixar.license在Bundle资源中

          第2步:导入相关库

          • 确认下列模型文件已添加入Bundle资源中
          person_detector.nb
          persib_cls.nb
          3dpose.nb
          • 确认下列库文件已正确链接
          libBARAuth.a
          libMDLCore.a
          libmodelcrypt.a
          libmml_framework_ios.a
          libpaddle_api_light_bundled.a
          opencv2.framework
          Photos.framework
          Accelerate.framework

          第3步:添加权限

          确保APP已获取相机及网络权限

          第4步:SDK初始化

          接口可参考头文件 HumanPoseInterface.hpp

          • SDK鉴权初始化

          注意:SDK鉴权的初始化必须要最先进行

          导入头文件

          #import "BARLicense.h"

          鉴权初始化需传入LICENSE数据

          // 鉴权初始化
          NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"dumixar" ofType:@"license"]];
          NSArray *features = [BARSDKPro setLicenseData:data onlineFeatures:^(NSArray *onLinefeatures) {
           } unsupportedFeature:^(NSInteger unsupportedFeature) {
              }];
          • SDK初始化

          需传入Bundle资源路径

          // 3D肢体模块初始化
          int init(const char* modeldir);

          调用示例:

          #include "HumanPoseInterface.hpp"
          NSString* bundlePath = [NSBundle.mainBundle bundlePath];
          int ret = humanPose->init([bundlePath UTF8String]);

          第5步: 3D肢体关键点预测

          /** 从asstes初始化
           * @param data bgr格式的图像数据
           * @param width 图像宽
           * @param height 图像高
           * @param angle 图像顺时针旋转为正所需的角度
           * @return std::vector<DetObj> 返回值为人体信息
           **/
          std::vector<DetObj> humanPosePredictor(const unsigned char*data, int width, int height, int angle);

          其中DetObj具体定义如下:

          // 3D肢体检测结果
          struct DetObj {
              float bbox[4]; //人物包围框
              std::vector<float> keypoints; //3D肢体关键点,数据结构为x0,y0,z0,x1,y1,z1...,大小为16*3
          } ;

          4. 关于Demo展示

          本SDK附带提供一个调用SDK及展示SDK 效果的基础Demo,在Demo中会有2D可视化及3D可视化两个展示方式:

          • 2D展示为取3D关键点中的XY屏幕坐标进行可视化,与画面中人物关键点位置匹配
          • 3D展示为在SceneKit 3D坐标系中对3D关键点的展示,由于3D坐标系与屏幕坐标系无法统一对应,所以Demo中展示时对3D关键点的坐标进行了缩放,且在3D坐标系中无法与2D屏幕画面中的人物关键点匹配位置。
          • 3D展示视图中触控屏幕可对坐标系进行旋转,以查看不同角度的人物展示。
          上一篇
          产品简介
          下一篇
          3D肢体关键点SDK-原生Android