手势识别算法
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
100 | 06/12/2023 |
1. 算法描述¶
手势识别算法主要对4种手势进行识别:YES(耶)、OK、L、STOP。
2. 接口调用流程¶
算法接口调用流程为 ALGO_HGR_CreateHandle->ALGO_HGR_HandleInit->ALGO_HGR_HandPersonDetect->ALGO_HGR_HandPoseRecognition->ALGO_HGR_HandleDeinit->ALGO_HGR_ReleaseHandle.
3. 功能模块API¶
API名 | 功能 |
---|---|
ALGO_HGR_CreateHandle | 创建句柄 |
ALGO_HGR_HandleInit | 初始化句柄 |
ALGO_HGR_HandPersonDetect | 人手部检测 |
ALGO_HGR_HandPoseRecognition | 手势识别 |
ALGO_HGR_HandleDeinit | 句柄反初始化 |
ALGO_HGR_ReleaseHandle | 释放句柄 |
3.1. ALGO_HGR_CreateHandle¶
-
功能
创建句柄
-
语法
MI_S32 ALGO_HGR_CreateHandle(MI_HGR_HANDLE* handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输出 -
返回值
0:成功。
非0:失败。
-
依赖
头文件:algo_hgr_api.h
库文件:libsstaralgo_hgr.so, libsstaralgo_hgr.a
3.2. ALGO_HGR_HandleInit¶
-
功能
初始化句柄
-
语法
MI_S32 ALGO_HGR_HandleInit(MI_HGR_HANDLE handle, AlgoHgrInitParam_t* initParam);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 initParam 初始化参数 输入 -
返回值
0:成功。
非0:失败。
-
依赖
头文件:algo_hgr_api.h
库文件:libsstaralgo_hgr.so, libsstaralgo_hgr.a
3.3. ALGO_HGR_HandPersonDetect¶
-
功能
人手部检测
-
语法
MI_S32 ALGO_HGR_HandPersonDetect(MI_HGR_HANDLE handle, AlgoHgrInputInfo_t* stBufInfo, HgrBbox_t** detBox,MI_S32* count);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 stBufInfo 模型输入数据640*352 yuv420_nv12 输入 detBox 检测框结果 输出 count 检测框个数 输出 -
返回值
0:成功。
非0:失败。
-
依赖
头文件:algo_hgr_api.h
库文件:libsstaralgo_hgr.so, libsstaralgo_hgr.a
3.4. ALGO_HGR_HandPoseRecognition¶
-
功能
手部姿态识别,识别4种手势中的哪种手势
-
语法
MI_S32 ALGO_HGR_HandPoseRecognition(MI_HGR_HANDLE handle, AlgoHgrInputInfo_t* stBufInfo, HgrBbox_t detBox, HgrPoint_t** output, MI_S32* count, AlgoHgrResult_t* hgrResult);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 stBufInfo crop的手部图像数据,256*256 yuv420_nv12 输入 detBox 手部检测框 输入 output 手部关键点 输出 count 手部关键点个数 输出 hgrResult 手部姿态结果 输出 -
返回值
0:成功。
非0:失败。
-
依赖
头文件:algo_hgr_api.h
库文件:libsstaralgo_hgr.so, libsstaralgo_hgr.a
3.5. ALGO_HGR_HandleDeinit¶
-
功能
句柄反初始化
-
语法
MI_S32 ALGO_HGR_HandleDeinit(MI_HGR_HANDLE handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
0:成功。
非0:失败。
-
依赖
头文件:algo_hgr_api.h
库文件:libsstaralgo_hgr.so, libsstaralgo_hgr.a
3.6. ALGO_HGR_ReleaseHandle¶
-
功能
释放句柄
-
语法
MI_S32 ALGO_HGR_ReleaseHandle(MI_HGR_HANDLE handle);
-
形参
参数名称 描述 输入/输出 handle 句柄 输入 -
返回值
0:成功。
非0:失败。
-
依赖
头文件:algo_adas_hgr.h
库文件:libsstaralgo_hgr.so, libsstaralgo_hgr.a
4. 数据类型¶
数据类型 | 定义 |
---|---|
AlgoHgrInitParam_t | 初始化参数结构体 |
AlgoHgrInputInfo_t | 输入图像数据结构体 |
AlgoHgrResult_t | 手势识别结果结构体 |
HgrPoint_t | 手部关键点结构体 |
HgrBbox_t | 手部检测框结构体 |
HgrCropInfo_t | 图片crop的信息 |
4.1. AlgoHgrInitParam_t¶
-
说明
初始化参数结构体
-
定义
typedef struct AlgoHgrInitParam_ { MI_U8 ipu_firmware_path[IPU_MAX_LENGTH]; MI_U8 det_model[MODEL_MAX_LENGTH]; MI_U8 land_model[MODEL_MAX_LENGTH]; HgrCropInfo_t disp_area; MI_FLOAT thredhold; }AlgoHgrInitParam_t;
-
成员
成员名称 描述 ipu_firmware_path ipu_firmware_bin路径 det_model 检测模型路径 land_model 关键点模型路径 disp_area 显示区域信息 thredhold 检测阈值 -
相关接口
4.2. AlgoHgrInputInfo_t¶
-
说明
输入图像数据结构体
-
定义
typedef struct AlgoHgrInputInfo_ { void* pt_tensor_data; MI_PHY phy_tensor_addr; MI_U32 bufsize; MI_U32 width; MI_U32 height; MI_S64 pts; }AlgoHgrInputInfo_t;
-
成员
成员名称 描述 pt_tensor_data 虚拟地址 phy_tensor_addr 物理地址 bufsize 数据大小 width 图片宽 height 图片高 pts 时间戳可不赋值 -
相关数据类型及接口
4.3. AlgoHgrResult_t¶
-
说明
手势识别结果结构体
-
定义
typedef struct AlgoHgrResult_ { MI_BOOL hg_ok; MI_BOOL hg_L; MI_BOOL hg_yes; MI_BOOL hg_stop; HgrBbox_t bbox; }AlgoHgrResult_t;
-
成员
成员名称 描述 hg_ok ok手势结果 hg_L L手势结果 hg_yes yes手势结果 hg_stop stop手势结果 bbox 手部框 -
相关数据类型及接口
4.4. HgrPoint_t¶
-
说明
手部关节点结构体
-
定义
typedef struct HgrPoint_ { MI_FLOAT x; MI_FLOAT y; }HgrPoint_t;
-
成员
成员名称 描述 x 节点横坐标 y 节点纵坐标 -
相关数据类型及接口
4.5. HgrBbox_t¶
-
说明
手部框结构体
-
定义
typedef struct HgrBbox_ { MI_S32 x; MI_S32 y; MI_S32 width; MI_S32 height; MI_FLOAT score; MI_S32 label; }HgrBbox_t;
-
成员
成员名称 描述 x 框的左上横坐标 y 框的左上纵坐标 width 框的宽 height 框的高 score 框的分值 label 框的类别 -
相关数据类型及接口
4.6. HgrCropInfo_t¶
-
说明
crop图片信息,如果是原图,则x=0,y=0,宽高为图像宽高
-
定义
typedef struct HgrCropInfo_ { MI_S32 x; MI_S32 y; MI_S32 width; MI_S32 height; }HgrCropInfo_t;
-
成员
成员名称 描述 x 左上横坐标 y 左上纵坐标 width 宽 height 高 -
相关数据类型及接口