houxiao
2017-03-21 29179252e3e9619738f36d3ddc37c88073870388
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#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_