Files

119 lines
4.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef libalg_api_h
#define libalg_api_h
#ifdef __cplusplus
extern "C"
{
#endif
// <summary>
// 图像结构
// </summary>
typedef struct ALG_IMAGE_INFO
{
unsigned int image_width; //图像宽度
unsigned int image_height; //图像高度
unsigned int image_stride; //图像行宽
unsigned int image_format; //预留,暂时只支持NV21
unsigned char *image_buffer; //图像buff
}C_ALG_IMAGE_INFO;
// <summary>
// 返回定义
// </summary>
typedef enum ALG_RESULT
{
// <summary>
// 执行成功
// </summary>
ALG_SUCCESS = 0,
// <summary>
// 算法未定义
// </summary>
ERR_ALG_NULL = 1000,
// <summary>
// KEY校验失败
// </summary>
ERR_KEY = 1001,
// <summary>
// 算法初始化失败
// </summary>
ERR_ALG_INIT = 1002,
// <summary>
// 创建算法失败
// </summary>
ERR_ALG_CREAT = 1003,
// <summary>
// 算法使能模块错误。
// </summary>
ERR_ALG_CONFLICT = 1004,
// <summary>
// 检测算法执行错误
// </summary>
ERR_ALG_DETECT_EXEC = 1005,
// <summary>
// 口罩算法执行错误
// </summary>
ERR_ALG_MASK_EXEC = 1006,
// <summary>
// 提取特征执行错误
// </summary>
ERR_ALG_FEATURE_EXEC = 1007,
// <summary>
// 人脸比对执行错误
// </summary>
ERR_ALG_MATCH_EXEC = 1008,
// <summary>
// 人形检测执行错误
// </summary>
ERR_ALG_PROCESS_EXEC = 1009,
// <summary>
// 检测人脸为空
// </summary>
ERR_ALG_FACE_NULL = 1010,
// <summary>
// 不允许多个人脸
// </summary>
ERR_ALG_FACE_MULTI = 1010,
// <summary>
// 姿态分数过低
// </summary>
ERR_ALG_FACE_QUALITY = 1011,
// <summary>
// 人脸注册数量已满
// </summary>
ERR_ALG_FACE_FULL = 1012,
// <summary>
// 不存在的注册信息
// </summary>
ERR_ALG_FACE_NOTUSER = 1013,
}C_ALG_RESULT;
// @brief 从原图仿射变换得到人脸小图
// @param src_img 原始YUV图像,注意:图像buff为虚拟地址
// @param dst_img 输出仿射变换的YUV归一化图,注意:该地址请预先分配好。
// @param targetpoints 进行仿射变换归一的5个标签点,长度为10。其内存排列为:xy xy xy xy xy
// targetpoints[0]为第一个标签点的xtargetpoints[9]为第五个标签点的y
// @param keypoints 人脸检测模块输出的5个关键点,长度为10。其内存排列为:xy xy xy xy xy
// keypoints[0]为第一个关键点的xkeypoints[9]为第五个关键点的y
// @return 成功返回ALG_RESULT,其他值参见C_ALG_RESULT的定义
C_ALG_RESULT alg_api_face_feature_warpaffine( C_ALG_IMAGE_INFO *src_img, C_ALG_IMAGE_INFO *dst_img,
float *targetpoints,float *keypoints);
// @brief 从原图仿射变换得到车牌小图
// @param src_img 原始YUV图像,注意:图像buff为虚拟地址
// @param dst_img 输出仿射变换的YUV归一化图,注意:该地址请预先分配好。
// @param targetpoints 进行仿射变换归一的4个标签点,长度为8。其内存排列为:xy xy xy xy
// targetpoints[0]为第一个标签点的xtargetpoints[8]为第4个标签点的y
// @param keypoints 车牌检测模块输出的4个关键点,长度为8。其内存排列为:xy xy xy xy
// keypoints[0]为第一个关键点的xkeypoints[8]为第4个关键点的y
// @return 成功返回ALG_RESULT,其他值参见C_ALG_RESULT的定义
C_ALG_RESULT alg_api_plate_warpaffine( C_ALG_IMAGE_INFO *src_img, C_ALG_IMAGE_INFO *dst_img,
float *targetpoints,float *keypoints);
#ifdef __cplusplus
}
#endif /* End of #ifdef __cplusplus */
#endif