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
148
149
#ifndef TYPES_DEF_H
#define TYPES_DEF_H
 
#include <Windows.h>
#include <iostream>
#include <stdlib.h>
#include <assert.h>
#include <string>
#include <map>
#include <vector>
#include <math.h>
#include <atlimage.h>
#include <io.h>
#include <functional>
 
//SDK°æ±¾ºÅ
#define   VERSION_NO     "1.0.0.0"  
typedef unsigned char uchar;
typedef BYTE uchar;
 
typedef std::function<void(int msgEvent, int x, int y, double rate)> ImageMouseCallback;
 
//½Ç¶Èת»»
#define _RadToDeg(x) (double)(x) * 57.295779513082
#define _DegToRad(x) (double)(x) / 57.295779513082
#define  FUNC_OK                  1    //º¯ÊýÔËÐÐOK
#define  FUNC_NG                  0    //º¯ÊýÔËÐÐNG
 
typedef enum OPER_FLAG
{
    DEFAULT_OPER_FLAG = 0,          //ûÓÐÈκβÙ×÷
    DRAW_OPER_FLAG,                 //»­Í¼
    EDIT_OPER_FLAG,                 //±à¼­
    SELECT_OPER_FLAG,               //Ñ¡Ôñ
    SCROLL_OPER_FLAG                //Í϶¯Ä£Ê½
}OPER_FLAG;
 
//ROIÇøÓò
#define ROI_ALL_TYPE        0                  /* ËùÓиñʽ */
#define ROI_RECT1           1                  /* ¾ØÐÎÇøÓò1 */
#define ROI_RECT2           2                  /* ¾ØÐÎÇøÓò2 */
#define ROI_CIRCLE          4                  /* Ô²ÐÎÇøÓò */
#define ROI_REGION          8                  /* ÈÎÒâÇøÓò */
#define ROI_LINE            16                 /* Ö±ÏßÇøÓò */
#define ROI_CROSS           32                 /* Ê®×Ö¼ÜÇøÓò */
#define UNKNOW_SHAPE        64                 /* Ã»ÓÐÈκÎÇøÓò */
 
//µã1
typedef struct _Point2I
{
    int x;
    int y;
}Point2I;
 
//µã2
typedef struct _Point2D
{
    double x;
    double y;
}Point2D;
 
//¾ØÐÎ1µÄ×ø±ê
typedef struct _RECT1
{
    Point2I pt0;
    Point2I pt1;
}RECT1;
 
//¾ØÐÎ2µÄ×ø±ê
typedef struct _RECT2
{
    Point2D pt;
    double angle;
    double width;
    double height;
}RECT2;
 
//Ô²ÐÎ×ø±ê
typedef struct _Circle2D
{
    Point2D pt;
    double radius;
}Circle2D;
 
//ÇøÓòÊý¾Ý
typedef struct _Region2D
{
    std::vector<Point2D> vPtData;
}Region2D;
 
//Ö±Ïß
typedef struct _Line2D
{
    Point2D pt0;
    Point2D pt1;
}Line2D;
 
typedef struct _CROSS
{
    Point2D pt;
    double size;
}CROSS;
 
//±ê¶¨Êý¾Ý½á¹¹
typedef struct _ParaAffine2D
{
    double kx0;    /* ·ÂÉä±ä»»¹ØÏµ */
    double kx1;    /* ·ÂÉä±ä»»¹ØÏµ */
    double kx2;    /* ·ÂÉä±ä»»¹ØÏµ */
    double ky0;    /* ·ÂÉä±ä»»¹ØÏµ */
    double ky1;    /* ·ÂÉä±ä»»¹ØÏµ */
    double ky2;    /* ·ÂÉä±ä»»¹ØÏµ */
}ParaAffine2D;
 
//±ê¶¨²ÎÊý
typedef struct _ParaCalibrate
{
    ParaAffine2D affine;   /* 2Dת»»¹ØÏµ jiang, 2020-08-29 */
    double xMmvsp;         /* X·½ÏòµÄͼÏñµ±Á¿ */
    double yMmvsp;         /* Y·½ÏòµÄͼÏñµ±Á¿ */
    double angle;          /* 2¸ö×ø±êϵµÄ¼Ð½Ç */
    double theta;          /* 2¸ö×ø±êϵµÄÇãб½Ç */
}ParaCalibrate;
 
//Ä£°å²ÎÊý
typedef struct _ParaMatch
{
    Point2D pt;          /* ¶¨Î»µÄÖеã */
    double angle;        /* ¶¨Î»µÄ½Ç¶È */
    double score;        /* ¶¨Î»µÄ·ÖÊý */
    int mirror;          //ÊÇ·ñ¾µÏñ£¬1±íʾûÓоµÏñ£¬ 0±íʾÐýת180¶È£¬2±íʾˮƽ¾µÏñ£¬3±íʾ´¹Ö±¾µÏñ
}ParaMatch;
 
//Ïà»ú±ê¶¨²ÎÊý
typedef struct _CalibrateResult
{
    double kx0;       /*X·½ÏòϵÊý*/
    double kx1;       /*X·½ÏòϵÊý*/
    double kx2;       /*X·½ÏòϵÊý*/
    double kx3;       /*X·½ÏòϵÊý*/
    double kx4;       /*X·½ÏòϵÊý*/
    double ky0;       /*Y·½ÏòϵÊý*/
    double ky1;       /*Y·½ÏòϵÊý*/
    double ky2;       /*Y·½ÏòϵÊý*/
    double ky3;       /*Y·½ÏòϵÊý*/
    double ky4;       /*Y·½ÏòϵÊý*/
}CalibrateResult;
 
#endif