📄 cvt.txt
字号:
}
CvPoint2D64d;
typedef struct CvPoint3D64d
{
double x;
double y;
double z;
}
CvPoint3D64d;
/******************************** CvSize's & CvBox **************************************/
typedef struct
{
int width;
int height;
}
CvSize;
CV_INLINE CvSize cvSize( int width, int height );
CV_INLINE CvSize cvSize( int width, int height )
{
CvSize s;
s.width = width;
s.height = height;
return s;
}
typedef struct CvSize2D32f
{
float width;
float height;
}
CvSize2D32f;
CV_INLINE CvSize2D32f cvSize2D32f( double width, double height );
CV_INLINE CvSize2D32f cvSize2D32f( double width, double height )
{
CvSize2D32f s;
s.width = (float)width;
s.height = (float)height;
return s;
}
typedef struct CvBox2D
{
CvPoint2D32f center; /* center of the box */
CvSize2D32f size; /* box width and length */
float angle; /* angle between the horizontal axis
and the first side (i.e. length) in radians */
}
CvBox2D;
/************************************* CvSlice ******************************************/
typedef struct CvSlice
{
int startIndex, endIndex;
} CvSlice;
CV_INLINE CvSlice cvSlice( int start, int end );
CV_INLINE CvSlice cvSlice( int start, int end )
{
CvSlice slice;
slice.startIndex = start;
slice.endIndex = end;
return slice;
}
#define CV_WHOLE_SEQ cvSlice(0, 0x3fffffff)
/************************************* CvScalar *****************************************/
typedef struct CvScalar
{
double val[4];
}
CvScalar;
CV_INLINE CvScalar cvScalar( double a, double b CV_DEFAULT(0),
double c CV_DEFAULT(0), double d CV_DEFAULT(0));
CV_INLINE CvScalar cvScalar( double a, double b, double c, double d )
{
CvScalar scalar;
scalar.val[0] = a; scalar.val[1] = b;
scalar.val[2] = c; scalar.val[3] = d;
return scalar;
}
CV_INLINE CvScalar cvRealScalar( double a );
CV_INLINE CvScalar cvRealScalar( double a )
{
CvScalar scalar;
scalar.val[0] = a;
scalar.val[1] = scalar.val[2] = scalar.val[3] = 0;
return scalar;
}
CV_INLINE CvScalar cvScalarAll( double a );
CV_INLINE CvScalar cvScalarAll( double a )
{
CvScalar scalar;
scalar.val[0] = scalar.val[1] = scalar.val[2] = scalar.val[3] = a;
return scalar;
}
/**************************** Connected Component **************************************/
struct CvSeq;
typedef struct CvConnectedComp
{
double area; /* area of the connected component */
double value; /* average brightness of the connected component
(or packed RGB color) */
CvRect rect; /* ROI of the component */
struct CvSeq* contour; /* optional component boundary
(the contour might have child contours corresponding to the holes)*/
}
CvConnectedComp;
/*************** Utility definitions, macros and inline functions ***********************/
#define CV_PI 3.1415926535897932384626433832795
#define CV_SWAP(a,b,t) ((t) = (a), (a) = (b), (b) = (t))
#ifndef MIN
#define MIN(a,b) ((a) > (b) ? (b) : (a))
#endif
#ifndef MAX
#define MAX(a,b) ((a) < (b) ? (b) : (a))
#endif
/* min & max without jumps */
#define CV_IMIN(a, b) ((a) ^ (((a)^(b)) & (((a) < (b)) - 1)))
#define CV_IMAX(a, b) ((a) ^ (((a)^(b)) & (((a) > (b)) - 1)))
/* absolute value without jumps */
#define CV_IABS(a) (((a) ^ ((a) < 0 ? -1 : 0)) - ((a) < 0 ? -1 : 0))
#define CV_SIGN(a) (((a) < 0 ? -1 : 0) | ((a) > 0))
/* initializes 8-element array for fast access to 3x3 neighborhood of a pixel */
#define CV_INIT_3X3_DELTAS( deltas, step, nch ) \
((deltas)[0] = (nch), (deltas)[1] = -(step) + (nch), \
(deltas)[2] = -(step), (deltas)[3] = -(step) - (nch), \
(deltas)[4] = -(nch), (deltas)[5] = (step) - (nch), \
(deltas)[6] = (step), (deltas)[7] = (step) + (nch))
/* ************************************************************************** *\
Fast square root and inverse square root by
Bruce W. Holloway, Jeremy M., James Van Buskirk, Vesa Karvonen and others.
Taken from Paul Hsieh's site http://www.azillionmonkeys.com/qed/sqroot.html.
\* ************************************************************************** */
#define CV_SQRT_MAGIC 0xbe6f0000
CV_INLINE float cvInvSqrt( float arg );
CV_INLINE float cvInvSqrt( float arg )
{
float x, y;
unsigned iarg = *((unsigned*)&arg);
*((unsigned*)&x) = (CV_SQRT_MAGIC - iarg)>>1;
y = arg*0.5f;
x*= 1.5f - y*x*x;
x*= 1.5f - y*x*x;
return x;
}
CV_INLINE float cvSqrt( float arg );
CV_INLINE float cvSqrt( float arg )
{
float x, y;
unsigned iarg = *((unsigned*)&arg);
*((unsigned*)&x) = (CV_SQRT_MAGIC - iarg)>>1;
y = arg*0.5f;
x*= 1.5f - y*x*x;
x*= 1.5f - y*x*x;
return x*arg;
}
/* Defines for Distance Transform */
typedef enum CvDisType
{
CV_DIST_USER = -1, /* User defined distance */
CV_DIST_L1 = 1, /* distance = |x1-x2| + |y1-y2| */
CV_DIST_L2 = 2, /* the simple euclidean distance */
CV_DIST_C = 3, /* distance = max(|x1-x2|,|y1-y2|) */
CV_DIST_L12 = 4, /* L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) */
CV_DIST_FAIR = 5, /* distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998 */
CV_DIST_WELSCH = 6, /* distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846 */
CV_DIST_HUBER = 7 /* distance = |x|<c ? x^2/2 : c(|x|-c/2), c=1.345 */
}
CvDisType;
/* Filters used in pyramid decomposition */
typedef enum CvFilter
{
CV_GAUSSIAN_5x5 = 7
}
CvFilter;
/****************************************************************************************/
/* Data structures */
/****************************************************************************************/
/******************************** Memory storage ****************************************/
typedef struct CvMemBlock
{
struct CvMemBlock* prev;
struct CvMemBlock* next;
}
CvMemBlock;
#define CV_STORAGE_MAGIC_VAL 0x42890000
typedef struct CvMemStorage
{
int signature;
CvMemBlock* bottom;/* first allocated block */
CvMemBlock* top; /* current memory block - top of the stack */
struct CvMemStorage* parent; /* borrows new blocks from */
int block_size; /* block size */
int free_space; /* free space in the current block */
}
CvMemStorage;
#define CV_IS_STORAGE(storage) \
((storage) != NULL && \
(((CvMemStorage*)(storage))->signature & CV_MAGIC_MASK) == CV_STORAGE_MAGIC_VAL)
typedef struct CvMemStoragePos
{
CvMemBlock* top;
int free_space;
}
CvMemStoragePos;
/*********************************** Sequence *******************************************/
typedef struct CvSeqBlock
{
struct CvSeqBlock* prev; /* previous sequence block */
struct CvSeqBlock* next; /* next sequence block */
int start_index; /* index of the first element in the block +
sequence->first->start_index */
int count; /* number of elements in the block */
char* data; /* pointer to the first element of the block */
}
CvSeqBlock;
#define CV_TREE_NODE_FIELDS(node_type) \
int flags; /* micsellaneous flags */ \
int header_size; /* size of sequence header */ \
struct node_type* h_prev; /* previous sequence */ \
struct node_type* h_next; /* next sequence */ \
struct node_type* v_prev; /* 2nd previous sequence */ \
struct node_type* v_next; /* 2nd next sequence */
/*
Read/Write sequence.
Elements can be dynamically inserted to or deleted from the sequence.
*/
#define CV_SEQUENCE_FIELDS() \
CV_TREE_NODE_FIELDS(CvSeq) \
int total; /* total number of elements */ \
int elem_size; /* size of sequence element in bytes */ \
char* block_max; /* maximal bound of the last block */ \
char* ptr; /* current write pointer */ \
int delta_elems; /* how many elements allocated when the seq grows */ \
CvMemStorage* storage; /* where the seq is stored */ \
CvSeqBlock* free_blocks; /* free blocks list */ \
CvSeqBlock* first; /* pointer to the first sequence block */
typedef struct CvSeq
{
CV_SEQUENCE_FIELDS()
}
CvSeq;
/*************************************** Set ********************************************/
/*
Set.
Order isn't keeped. There can be gaps between sequence elements.
After the element has been inserted it stays on the same place all the time.
The MSB(most-significant or sign bit) of the first field is 0 iff the element exists.
*/
#define CV_SET_ELEM_FIELDS(elem_type) \
int flags; \
struct elem_type* next_free;
typedef struct CvSetElem
{
CV_SET_ELEM_FIELDS(CvSetElem)
}
CvSetElem;
#define CV_SET_FIELDS() \
CV_SEQUENCE_FIELDS() \
CvSetElem* free_elems;
typedef struct CvSet
{
CV_SET_FIELDS()
}
CvSet;
#define CV_SET_ELEM_IDX_MASK ((1 << 24) - 1)
#define CV_SET_ELEM_FREE_FLAG (1 << (sizeof(int)*8-1))
/* Checks whether the element pointed by ptr belongs to a set or not */
#define CV_IS_SET_ELEM( ptr ) (((CvSetElem*)(ptr))->flags >= 0)
/************************************* Graph ********************************************/
/*
Graph is represented as a set of vertices.
Vertices contain their adjacency lists (more exactly, pointers to first incoming or
outcoming edge (or 0 if isolated vertex)). Edges are stored in another set.
There is a single-linked list of incoming/outcoming edges for each vertex.
Each edge consists of:
two pointers to the starting and the ending vertices (vtx[0] and vtx[1],
respectively). Graph may be oriented or not. In the second case, edges between
vertex i to vertex j are not distingueshed (during the search operations).
two pointers to next edges for the starting and the ending vertices.
next[0] points to the next edge in the vtx[0] adjacency list and
next[1] points to the next edge in the vtx[1] adjacency list.
*/
#define CV_GRAPH_EDGE_FIELDS() \
int flags; \
float weight; \
struct CvGraphEdge* next[2]; \
struct CvGraphVtx* vtx[2];
#define CV_GRAPH_VERTEX_FIELDS() \
int flags; \
struct CvGraphEdge* first;
typedef struct CvGraphEdge
{
CV_GRAPH_EDGE_FIELDS()
}
CvGraphEdge;
typedef struct CvGraphVtx
{
CV_GRAPH_VERTEX_FIELDS()
}
CvGraphVtx;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -