开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
人脸识别

    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