bef_effect_ai_foot.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #ifndef _BEF_EFFECT_FOOT_DETECT_AI_H_
  2. #define _BEF_EFFECT_FOOT_DETECT_AI_H_
  3. #if defined(__ANDROID__) || defined(TARGET_OS_ANDROID)
  4. #include<jni.h>
  5. #endif
  6. #include "bef_effect_ai_public_define.h"
  7. #define BEF_MAX_FEET_NUM 2
  8. #define BEF_FEET_KEY_POINT_NUM 66
  9. typedef struct bef_ai_foot_st {
  10. int id; // id
  11. bef_ai_rect box; // 脚框
  12. float left_prob; // 脚是左脚的概率
  13. float foot_prob; // 是脚的概率
  14. bef_ai_tt_key_point joints2d[BEF_FEET_KEY_POINT_NUM]; // 脚的2d关键点,66x2
  15. unsigned char* segment; // 腿部的分割
  16. bef_ai_rect segment_box; // 腿部分割的框
  17. float trans[12]; // 脚的3d姿态的旋转矩阵,3x4
  18. } bef_ai_foot, *ptr_bef_ai_foot;
  19. typedef struct bef_ai_foot_ret_st {
  20. bef_ai_foot p_feet[BEF_MAX_FEET_NUM]; // foot 信息
  21. int feet_count; // 检出的feet总数
  22. } bef_ai_foot_ret, *ptr_bef_ai_foot_ret;
  23. typedef void *bef_ai_foot_sdk_handle;
  24. /**
  25. * @brief 模型参数类型
  26. *
  27. */
  28. typedef enum {
  29. BEF_kFootEdgeMode = 1,
  30. }bef_ai_foot_param_type;
  31. /**
  32. * @brief 模型枚举,有些模块可能有多个模型
  33. *
  34. */
  35. typedef enum {
  36. BEF_FootJoints2dModel = 1,
  37. BEF_FootJoints3dModel = 2, ///< 暂时无用
  38. BEF_FootDetectionModel = 3,
  39. BEF_FootFilterModel = 4,
  40. BEF_FootLeftRightModel = 5,
  41. BEF_LegSegModel = 6,
  42. }bef_ai_foot_model_type;
  43. BEF_SDK_API bef_effect_result_t
  44. bef_effect_ai_foot_detect_create(bef_ai_foot_sdk_handle *handle);
  45. BEF_SDK_API bef_effect_result_t
  46. bef_effect_ai_foot_detect(
  47. bef_ai_foot_sdk_handle handle,
  48. const unsigned char *image,
  49. bef_ai_pixel_format pixel_format,
  50. int image_width,
  51. int image_height,
  52. int image_stride,
  53. bef_ai_rotate_type orientation,
  54. bef_ai_foot_ret *p_foot_result);
  55. BEF_SDK_API bef_effect_result_t
  56. bef_effect_ai_foot_detect_setmodel(bef_ai_foot_sdk_handle handle,
  57. bef_ai_foot_model_type type,
  58. const char * strModelPath);
  59. BEF_SDK_API bef_effect_result_t
  60. bef_effect_ai_foot_detect_setparam(bef_ai_foot_sdk_handle handle,
  61. bef_ai_foot_param_type type,
  62. float value);
  63. BEF_SDK_API bef_effect_result_t
  64. bef_effect_ai_foot_render_resolution(bef_ai_foot_sdk_handle handle,
  65. int width,
  66. int height);
  67. BEF_SDK_API bef_ai_foot_ret*
  68. bef_effect_ai_foot_assign_memory(bef_ai_foot_sdk_handle handle);
  69. BEF_SDK_API bef_effect_result_t
  70. bef_effect_ai_foot_release_memory(bef_ai_foot_ret* result);
  71. BEF_SDK_API bef_effect_result_t
  72. bef_effect_ai_foot_detect_destroy(bef_ai_foot_sdk_handle handle);
  73. /**
  74. * @brief 足部检测授权
  75. * @param [in] handle Created hand detect handle
  76. * 已创建的足部检测句柄
  77. * @param [in] license 授权文件字符串
  78. * @param [in] length 授权文件字符串长度
  79. * @return If succeed return BEF_RESULT_SUC, other value please refer bef_effect_ai_public_public_define.h
  80. * 成功返回 BEF_RESULT_SUC, 授权码非法返回 BEF_RESULT_INVALID_LICENSE ,其它失败返回相应错误码, 具体请参考 bef_effect_ai_public_public_define.h
  81. */
  82. #if defined(__ANDROID__) || defined(TARGET_OS_ANDROID)
  83. BEF_SDK_API bef_effect_result_t bef_effect_ai_foot_check_license(JNIEnv* env, jobject context,
  84. bef_effect_handle_t handle, const char *licensePath);
  85. #else
  86. #ifdef __APPLE__
  87. BEF_SDK_API bef_effect_result_t bef_effect_ai_foot_check_license(bef_effect_handle_t handle,
  88. const char *licensePath);
  89. #else
  90. BEF_SDK_API bef_effect_result_t bef_effect_ai_foot_check_license(bef_effect_handle_t handle,
  91. const char *licensePath);
  92. #endif
  93. #endif
  94. #endif // _BEF_EFFECT_FOOT_DETECT_AI_H_