#ifndef CV_COMMON_H_
|
#define CV_COMMON_H_
|
|
/// @defgroup cv_common cv common
|
/// @brief common definitions for cv libs
|
/// @{
|
|
#ifndef CV_SDK_API_
|
#ifdef _MSC_VER
|
# ifdef CV_STATIC_LIB
|
# define CV_SDK_API_
|
# elif defined SDK_EXPORTS
|
# define CV_SDK_API_ __declspec(dllexport)
|
# else
|
# define CV_SDK_API_ __declspec(dllimport)
|
# endif
|
#else /* _MSC_VER */
|
# ifdef SDK_EXPORTS
|
# define CV_SDK_API_ __attribute__((visibility ("default")))
|
# else
|
# define CV_SDK_API_
|
# endif
|
#endif
|
#endif
|
|
#ifdef __cplusplus
|
# define CV_SDK_API extern "C" CV_SDK_API_
|
#else
|
# define CV_SDK_API CV_SDK_API_
|
#endif
|
|
/// cv handle declearation
|
typedef void *cv_handle_t;
|
|
/// cv result declearation
|
typedef int cv_result_t;
|
|
#define CV_OK (0) ///< 正常运行
|
#define CV_E_INVALIDARG (-1) ///< 无效参数
|
#define CV_E_HANDLE (-2) ///< 句柄错误
|
#define CV_E_OUTOFMEMORY (-3) ///< 内存不足
|
#define CV_E_FAIL (-4) ///< 内部错误
|
#define CV_E_DELNOTFOUND (-5) ///< 定义缺失
|
#define CV_E_INVALID_PIXEL_FORMAT (-6) ///< 不支持的图像格式
|
#define CV_E_FILE_NOT_FOUND (-10) ///< 模型文件不存在
|
#define CV_E_INVALID_FILE_FORMAT (-11) ///< 模型格式不正确, 导致加载失败
|
#define CV_E_INVALID_APPID (-12) ///< 包名错误
|
#define CV_E_INVALID_AUTH (-13) ///< 加密狗功能不支持
|
#define CV_E_AUTH_EXPIRE (-14) ///< SDK过期
|
#define CV_E_FILE_EXPIRE (-15) ///< 模型文件过期
|
#define CV_E_DONGLE_EXPIRE (-16) ///< 加密狗过期
|
#define CV_E_ONLINE_AUTH_FAIL (-17) ///< 在线验证失败
|
#define CV_E_ONLINE_AUTH_TIMEOUT (-18) ///< 在线验证超时
|
#define CV_E_UNSUPPORTED (-19) ///< 不支持的函数调用方式
|
|
|
/// cv rectangle definition
|
typedef struct cv_rect_t {
|
int left; ///< 矩形最左边的坐标
|
int top; ///< 矩形最上边的坐标
|
int right; ///< 矩形最右边的坐标
|
int bottom; ///< 矩形最下边的坐标
|
} cv_rect_t;
|
|
/// cv float type point definition
|
typedef struct cv_pointf_t {
|
float x; ///< 点的水平方向坐标, 为浮点数
|
float y; ///< 点的竖直方向坐标, 为浮点数
|
} cv_pointf_t;
|
|
/// cv integer type point definition
|
typedef struct cv_pointi_t {
|
int x; ///< 点的水平方向坐标, 为整数
|
int y; ///< 点的竖直方向坐标, 为整数
|
} cv_pointi_t;
|
|
/// cv object struct
|
typedef struct cv_object_t {
|
cv_pointi_t *corner;
|
int corner_count;
|
} cv_object_t;
|
|
/// cv landmark array struct
|
typedef struct cv_landmarks_t {
|
cv_pointf_t *points_array;
|
int points_count;
|
} cv_landmarks_t;
|
|
typedef struct cv_feature_header_t {
|
int ver; ///< 版本信息
|
int idx; ///< 数组下标索引
|
int len; ///< CV_FEATURE全部内容的长度, 包括feature_header和特征数组, 按字节计算, 与sizeof(cv_feature_header_t)定义不同
|
} cv_feature_header_t;
|
|
/// @brief 特征格式定义
|
typedef struct cv_feature_t {
|
int ver; ///< 特征版对应模型本号
|
int idx; ///< 特征索引序号
|
int len; ///< CV_FEATURE全部内容的长度, 包括feature_header和特征数组, 按字节计算, 与sizeof(cv_feature_header_t)定义不同
|
float feat[0]; ///< 特征数组
|
} cv_feature_t;
|
|
#define CV_FEATURE_HEADER(pf) ((cv_feature_header_t*)(pf))
|
#define CV_FEATURE_SIZE(pf) (CV_FEATURE_HEADER(pf)->len)
|
#define CV_FEATURE_LENGTH(pf) ((CV_FEATURE_HEADER(pf)->len-sizeof(cv_feature_header_t))/sizeof(float))
|
#define CV_ENCODE_FEATURE_SIZE(pf) ((CV_FEATURE_HEADER(pf)->len+2)/3*4 + 1)
|
|
/// cv pixel format definition
|
typedef enum {
|
CV_PIX_FMT_GRAY8, ///< Y 1 8bpp ( 单通道8bit灰度像素 )
|
CV_PIX_FMT_YUV420P, ///< YUV 4:2:0 12bpp ( 3通道, 一个亮度通道, 另两个为U分量和V分量通道, 所有通道都是连续的 )
|
CV_PIX_FMT_NV12, ///< YUV 4:2:0 12bpp ( 2通道, 一个通道是连续的亮度通道, 另一通道为UV分量交错 )
|
CV_PIX_FMT_NV21, ///< YUV 4:2:0 12bpp ( 2通道, 一个通道是连续的亮度通道, 另一通道为VU分量交错 )
|
CV_PIX_FMT_BGRA8888, ///< BGRA 8:8:8:8 32bpp ( 4通道32bit BGRA 像素 )
|
CV_PIX_FMT_BGR888 ///< BGR 8:8:8 24bpp ( 3通道24bit BGR 像素 )
|
} cv_pixel_format;
|
|
/// @brief 时间戳定义
|
typedef struct cv_time_t {
|
long int tv_sec; ///< 秒
|
long int tv_usec; ///< 微妙
|
}cv_time_t;
|
|
/// 图像格式定义
|
typedef struct cv_image {
|
unsigned char *data; ///< 图像数据指针
|
cv_pixel_format pixel_format; ///< 像素格式
|
int width; ///< 宽度(以像素为单位)
|
int height; ///< 高度(以像素为单位)
|
int stride; ///< 跨度, 即每行所占的字节数
|
cv_time_t time_stamp; ///< 时间戳
|
} cv_image;
|
|
typedef struct cv_clustering_result_t {
|
unsigned int count; ///< 目标数量
|
int *idxs; ///< 目标索引数组
|
unsigned int group_flags; ///< 保留参数
|
} cv_clustering_result_t;
|
|
/// @brief 图像分类标签结果
|
typedef struct cv_classifier_result_t {
|
int id; ///标签
|
float score; /// 置信度
|
} cv_classifier_result_t;
|
|
/// @}
|
#endif // INCLUDE_CV_COMMON_H_
|