识别和检测动态手势类型,可识别17类动态手势,如左滑/右滑。
支持平台 | Android、iOS |
---|---|
支持输入格式 | RGBA8888、BGRA8888、BGR888、RGB888 |
内存占用 | <12M (测试设备OPPO R11) |
检测速度 | <5ms(测试设备OPPO R11) |
详细接口说明查看头文件:bef_effect_ai_dynamic_gesture.h
BEF_SDK_API bef_effect_result_t bef_effect_ai_dynamic_gesture_create(bef_effect_handle_t *handle);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 创建的动态手势算法句柄 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
BEF_SDK_API bef_effect_result_t bef_effect_ai_dynamic_gesture_init( bef_effect_handle_t handle, const char* model_path);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 动态手势算法句柄 |
model_path | const char* | 模型文件所在的文件夹路径 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
备注
预留接口,但是暂不支持外部参数设置
BEF_SDK_API bef_effect_result_t bef_effect_ai_dynamic_gesture_detect( bef_effect_handle_t handle, const unsigned char *image, bef_ai_pixel_format pixel_format, int image_width, int image_height, int image_stride, bef_ai_rotate_type orientation, bef_ai_dynamic_gesture_ret *result);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 动态手势算法的句柄 |
image | const unsigned char* | 为传入图像的大小 |
pixel_format | bef_ai_pixel_format | 传入图像的类型 |
image_width | int | 传入图像的宽 |
image_height | int | 传入图像的高 |
image_stride | int | 传入图像的步长 |
orientation | bef_ai_rotate_type | 传入图像旋转角 |
result | bef_ai_dynamic_gesture_ret* | 算法处理返回结果 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
备注
bef_ai_dynamic_gesture_ret 详细见bef_effect_ai_dynamic_gesture.h
/** * @brief 封装预测接口的返回值 * * @note 不同的算法,可以在这里添加自己的自定义数据 */ typedef struct { int action; float action_score; } bef_ai_dynamic_gesture_info; /// @brief 检测结果 typedef struct { bef_ai_dynamic_gesture_info p_gestures[BEF_MAX_GESTURE_HAND_NUM]; ///< 检测到的动态手势信息 int gesture_count; ///< 检测到的手势数量; } bef_ai_dynamic_gesture_ret;
BEF_SDK_API bef_effect_result_t bef_effect_ai_dynamic_gesture_release(bef_effect_handle_t handle);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 动态手势算法的句柄 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
// 离线license检测方式 BEF_SDK_API bef_effect_result_t bef_effect_ai_dynamic_gesture_check_license( bef_effect_handle_t handle, const char *licensePath); // 在线license检测方式 BEF_SDK_API bef_effect_result_t bef_effect_ai_dynamic_gesture_check_online_license( bef_effect_handle_t handle, const char *licensePath);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_effect_handle_t | 动态手势算法的句柄 |
licensePath | const char * | 授权文件字符串 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
接口说明
详细接口说明查看文件:com.bytedance.labcv.effectsdk.DynamicGestureDetect.java
public int init( Context context, String modelPath, String licensePath, boolean onlineLicense)
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
context | Context | 应用上下文 |
modelpath | String | 模型文件绝对路径 |
licensePath | String | 授权文件绝对路径 |
onlineLicense | boolean | 授权类型 |
返回值
成功返回BEF_RESULT_SUC,否则返回对应的错误码
备注
预留接口,但是暂不支持外部参数设置
public BefDynamicGestureInfo detect( ByteBuffer buffer, BytedEffectConstants.PixlFormat pixelFormat, int imageWidth, int imageHeight, int imageStride, BytedEffectConstants.Rotation orientation)
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
buffer | ByteBuffer | 输入图像数据 |
pixelFormat | BytedEffectConstants.PixlFormat | 输入数据格式 |
imageWidth | int | 输入图像宽度 |
imageHeight | int | 输入图像高度 |
imageStride | int | 输入图像步长 |
orientation | BytedEffectConstants.Rotation | 输入图像旋转角 |
备注
类BefDynamicGestureInfo详细情况可以参考com.bytedance.labcv.effectsdk.BefDynamicGestureInfo.java,并且其定义与C接口bef_ai_dynamic_gesture_ret保持一致。
/** * 动态手势算法结果 */ public class BefDynamicGestureInfo { /** * 动态手势数组 * Array of Dynamic Gesture */ private GestureInfo[] gestureInfos; /** * 检测到动态手势数 * Amount of Gesture */ private int gestureNum; public GestureInfo[] getGestureInfos() { return gestureInfos; } public void setGestureInfos(GestureInfo[] gestureInfos) { this.gestureInfos = gestureInfos; } public int getGestureNum() { return gestureNum; } public void setGestureNum(int gestureNum) { this.gestureNum = gestureNum; } public static class GestureInfo { private int actionType = 0; private float actionScore = 0.0f; public int getActionType() { return actionType; } public float getActionScore() { return actionScore; } @Override public String toString() { return "GestureInfo{" + "actionType=" + actionType + ", actionType=" + actionType + '}'; } } }
返回值
成功返回 类BefDynamicGestureInfo-动态手势结果
public void release()
答:建议首先查看以下tag输出Error类型的日志:
bef_effect_ai 和SMASH_E_LOG 以及 EffectSDK
错误码请参考错误码表