Linux48:rockx常用的API
rockx人脸检测使用的APIrockx框架提供了一系列的人脸识别、检测的API开发者使用它的API能够快速开发出人脸相关的功能。我们来看看在人脸检测中需要用到的API。1.1rockx_create函数的定义rockx_ret_t rockx_create(rockx_handle_t *handle, rockx_module_t m, void *config, size_t config_size);函数解释rockx_create创建rockx的句柄rockx_handle_t。rockx_handle_t也是管理整个rockx人脸检测、人脸识别的最重要结构体第一个参数rockx_handle_t的结构体指针第二个参数rockx_module_t的结构体rockx_module_t是一个枚举类型设置当前rockx的处理类型。具体的如下ROCKX_MODULE_FACE_DETECTION人脸检测模块ROCKX_MODULE_FACE_LANDMARK_68人脸68个特征点检测ROCKX_MODULE_FACE_RECOGNIZE人脸识别模块ROCKX_MODULE_FACE_ANALYZE人脸分析模块ROCKX_MODULE_OBJECT_DETECTION目标检测模块ROCKX_MODULE_POSE_BODY人体姿态检测模块14个关键点ROCKX_MODULE_POSE_FINGER_21手指检测模块21个关键点ROCKX_MODULE_FACE_LANDMARK_5人脸5个特征点检测ROCKX_MODULE_HEAD_DETECTION人体头部检测模块ROCKX_MODULE_CARPLATE_DETECTION车牌检测模块ROCKX_MODULE_CARPLATE_ALIGN车牌对齐模块ROCKX_MODULE_CARPLATE_RECOG车牌识别模块ROCKX_MODULE_OBJECT_TRACK物体追踪模块ROCKX_MODULE_POSE_FINGER_3手指检测模块 支持3个关键点ROCKX_MODULE_FACE_MASKS_DETECTION人脸口罩检测检测这个人是否戴口罩ROCKX_MODULE_FACE_DETECTION_V2人脸检测模块Version2版本ROCKX_MODULE_BODY_MASK人体身体遮挡检测主要是检测当前人体是否有遮挡物ROCKX_MODULE_POSE_BODY_V2人体姿态检测V2是Version2最多能够检测17个关键点ROCKX_MODULE_FACE_DETECTION_V3人脸检测模块V3是Version3它只能检测320 * 320的人脸ROCKX_MODULE_FACE_DETECTION_V3_LARGE人脸检测模块加强版V3是Version3Large能够检测640 * 640的人脸ROCKX_MODULE_PERSON_DETECTION行人检测模块主要是检测当前图像中是否有行人ROCKX_MODULE_FACE_LANDMARK_106人脸关键点检测模型总共能检测出106个关键点ROCKX_MODULE_FACE_BEAUTY人脸漂亮指数检测模型主要是检测人的漂亮指数是多少ROCKX_MODULE_FACE_SMILE_DETECT人脸微笑检测模型检测当前人是否微笑ROCKX_MODULE_FACE_MASK_CLASSIFIER人脸口罩分类检测模型主要是检测当前口罩的类型是什么ROCKX_MODULE_PERSON_DETECTION_V2行人检测模型V2是Version2它只能检测532 * 320的行人图像ROCKX_MODULE_PERSON_DETECTION_V3行人检测模型V3是Version3它可以检测多尺寸的行人图像第三个参数rockx_config_t结构体指针主要是配置rockx的基本参数它的创建是用rockx_add_config来创建第四个参数config_size默认是0就可以1.2rockx_add_config函数的定义rockx_ret_t rockx_add_config(rockx_config_t *config, const char *key, const char *value);函数解释添加rockx的config配置第一个参数rockx_config_t结构体指针rockx_config_t的创建是用rockx_create_config来分配如rockx_config_t *config rockx_create_config();第二个参数config的key, 最常见的KEY是ROCKX_CONFIG_DATA_PATH(ROCKX的配置路径)第三个参数config的value, 跟Key一一对应, 比方说Key是ROCKX_CONFIG_DATA_PATH,那它的value就是对应的rockx的具体路径如:/userdata/rockx_data/。示例rockx_config_t *config rockx_create_config();rockx_add_config(config, ROCKX_CONFIG_DATA_PATH, /userdata/rockx_data/);1.3rockx_face_detect函数的定义函数解释这个API主要是对人脸进行检测得到人脸检测的位置信息rockx_ret_t rockx_face_detect(rockx_handle_t handle, rockx_image_t *in_img, rockx_object_array_t *face_array, rockx_async_callback *callback);第一个参数rockx_handle_t的结构体第二个参数rockx_image_t的结构体指针这个是输入的图像需要检测的图像也可以是每一帧视频流。第三个参数rockx_object_array_t的结构体指针主要是输出检测结果这个检测结果的结构体如下count检测的人脸数量rockx_object_t检测的具体信息具体的成员变量如下idobject的id号cls_idxobject的index索引boxrockx的区域信息rockx_rect_t结构体。left区域左边缘的x坐标其实就是x轴数据top:区域顶的y坐标其实就是Y轴数据right区域右边缘的x坐标其实就是left widthbottom区域底的Y坐标其实就是 top heightscoreobject物体信任分数第四个参数config_size默认是0就可以1.4rockx_face_recognize函数的定义函数定义这个API主要是对人脸进行识别并提取人脸数据rockx_ret_t rockx_face_recognize(rockx_handle_t handle, rockx_image_t *in_img, rockx_face_feature_t *out_feature);第一个参数rockx_handle_t的结构体第二个参数rockx_image_t的结构体指针这个是输入的图像需要检测的图像也可以是每一帧视频流。第三个参数rockx_face_feature_t的结构体指针rockx_face_feature_t结构体主要是存储人脸的特征值和长度我们来看看这个结构体的组成version人脸识别版本len人脸识别的长度feature[512]人脸识别的数据512的float数组这个值是存储一个二进制数据1.5rockx_face_feature_similarity函数的定义函数的定义这个API主要是对比两个人脸并计算两个人脸的对比数值rockx_ret_t rockx_face_feature_similarity(rockx_face_feature_t *in_feature1, rockx_face_feature_t *in_feature2, float *out_similarity);第一个参数in_feature1需要对比的人脸特征值1第一个参数in_feature2需要对比的人脸特征值2第三个参数in_feature1和in_feature2对比的相似度值一般小于1.0可以判断为同一个人1.6rockx_face_align函数的定义函数的定义这个API主要是对目前检测的人脸进行对齐这个对齐一般是用face_landmark检测人脸关键点进行对齐rockx_ret_t rockx_face_align(rockx_handle_t handle, rockx_image_t *in_img, rockx_rect_t *in_box, rockx_face_landmark_t *in_landmark, rockx_image_t *out_img);第一个参数rockx_handle_t的结构体第二个参数in_img输入的图像第三个参数in_box是人脸检测的区域用矩形来表示我们来看看rockx_rect_t的结构体成员变量left表示矩形左边缘的X坐标。top表示矩形顶部的y坐标right表示矩形右边缘的x坐标bottom表示矩形底部的y坐标。第四个参数rockx_face_landmark_t 的结构体指针主要是检测人脸关键点我们来看看这个结构体的成员变量image_width图像的长度image_height图像的高度face_box人脸的检测区域用矩形表示landmarks_count关键点个数landmarks[128]具体的人脸关键点rockx_point_t来表示它本质上就是x,y的点score每个关键点的分数第五个参数out_img输出的图像经过人脸对齐后的图像1.7rockx_face_filter函数的定义函数的定义这个API主要是过滤人脸过滤图像中不符合人脸的图像rockx_ret_t rockx_face_filter(rockx_handle_t handle, rockx_image_t *in_img, rockx_rect_t *in_box, int *is_false_face);第一个参数rockx_handle_t的结构体第二个参数in_img是输入的图像第三个参数in_box人脸检测区域是一个矩形第四个参数is_falas_face判断当前检测的图像是否是人脸是人脸就等于true否则false1.8rockx_face_masks_detect函数的定义函数解释这个API主要是检测当前人脸是否有戴口罩rockx_ret_t rockx_face_masks_detect(rockx_handle_t handle, rockx_image_t *in_img, rockx_face_mask_array_t *face_mask_array, rockx_async_callback *callback);第一个参数rockx_handle_t的结构体第二个参数in_img是输入的图像第三个参数face_mask_array存放口罩的数据我们来看看这个结构体的数据第一个参数count口罩的数量第二个参数rockx_face_mask_t具体的口罩参数如下图第一个参数face_box是口罩的区域用矩形表示第二个参数mask_score口罩的分数第三个参数hasMask是否有戴口罩