⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxtypes.h

📁 将OpenCV移植到DSP上
💻 H
📖 第 1 页 / 共 4 页
字号:
CV_INLINE  CvPoint2D32f  cvPoint2D32f( double x, double y ){    CvPoint2D32f p;    p.x = (float)x;    p.y = (float)y;    return p;}CV_INLINE  CvPoint2D32f  cvPointTo32f( CvPoint point ){    return cvPoint2D32f( (float)point.x, (float)point.y );}typedef struct CvPoint3D32f{    float x;    float y;    float z;}CvPoint3D32f;CV_INLINE  CvPoint3D32f  cvPoint3D32f( double x, double y, double z ){    CvPoint3D32f p;    p.x = (float)x;    p.y = (float)y;    p.z = (float)z;    return p;}typedef struct CvPoint2D64f{    double x;    double y;}CvPoint2D64f;CV_INLINE  CvPoint2D64f  cvPoint2D64f( double x, double y ){    CvPoint2D64f p;    p.x = x;    p.y = y;    return p;}typedef struct CvPoint3D64f{    double x;    double y;    double z;}CvPoint3D64f;CV_INLINE  CvPoint3D64f  cvPoint3D64f( double x, double y, double z ){    CvPoint3D64f p;    p.x = x;    p.y = y;    p.z = z;    return p;}/******************************** CvSize's & CvBox **************************************/typedef struct{    int width;    int height;}CvSize;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 ){    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 degrees */}CvBox2D;/* Line iterator state */typedef struct CvLineIterator{    /* pointer to the current point */    uchar* ptr;    /* Bresenham algorithm state */    int  err;    int  plus_delta;    int  minus_delta;    int  plus_step;    int  minus_step;}CvLineIterator;/************************************* CvSlice ******************************************/typedef struct CvSlice{    int  start_index, end_index;}CvSlice;CV_INLINE  CvSlice  cvSlice( int start, int end ){    CvSlice slice;    slice.start_index = start;    slice.end_index = end;    return slice;}#define CV_WHOLE_SEQ_END_INDEX 0x3fffffff#define CV_WHOLE_SEQ  cvSlice(0, CV_WHOLE_SEQ_END_INDEX)/************************************* CvScalar *****************************************/typedef struct CvScalar{    double val[4];}CvScalar;CV_INLINE  CvScalar  cvScalar( double val0, double val1 CV_DEFAULT(0),                               double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0)){    CvScalar scalar;    scalar.val[0] = val0; scalar.val[1] = val1;    scalar.val[2] = val2; scalar.val[3] = val3;    return scalar;}CV_INLINE  CvScalar  cvRealScalar( double val0 ){    CvScalar scalar;    scalar.val[0] = val0;    scalar.val[1] = scalar.val[2] = scalar.val[3] = 0;    return scalar;}CV_INLINE  CvScalar  cvScalarAll( double val0123 ){    CvScalar scalar;    scalar.val[0] = val0123;    scalar.val[1] = val0123;    scalar.val[2] = val0123;    scalar.val[3] = val0123;    return scalar;}/****************************************************************************************\*                                   Dynamic Data structures                              *\****************************************************************************************//******************************** Memory storage ****************************************/typedef struct CvMemBlock{    struct CvMemBlock*  prev;    struct CvMemBlock*  next;}CvMemBlock;#define CV_STORAGE_MAGIC_VAL    0x42890000typedef 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;#define CV_TYPE_NAME_SEQ             "opencv-sequence"#define CV_TYPE_NAME_SEQ_TREE        "opencv-sequence-tree"/*************************************** Set ********************************************//*  Set.  Order is not preserved. There can be gaps between sequence elements.  After the element has been inserted it stays in the same place all the time.  The MSB(most-significant or sign bit) of the first field (flags) 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;   \    int active_count;typedef struct CvSet{    CV_SET_FIELDS()}CvSet;#define CV_SET_ELEM_IDX_MASK   ((1 << 26) - 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;typedef struct CvGraphVtx2D{    CV_GRAPH_VERTEX_FIELDS()    CvPoint2D32f* ptr;}CvGraphVtx2D;/*   Graph is "derived" from the set (this is set a of vertices)   and includes another set (edges)*/#define  CV_GRAPH_FIELDS()   \    CV_SET_FIELDS()          \    CvSet* edges;typedef struct CvGraph{    CV_GRAPH_FIELDS()}CvGraph;#define CV_TYPE_NAME_GRAPH "opencv-graph"/*********************************** Chain/Countour *************************************/typedef struct CvChain{    CV_SEQUENCE_FIELDS()    CvPoint  origin;}CvChain;#define CV_CONTOUR_FIELDS()  \    CV_SEQUENCE_FIELDS()     \    CvRect rect;             \    int color;               \    int reserved[3];typedef struct CvContour{    CV_CONTOUR_FIELDS()}CvContour;typedef CvContour CvPoint2DSeq;/****************************************************************************************\*                                    Sequence types                                      *\****************************************************************************************/#define CV_SEQ_MAGIC_VAL             0x42990000#define CV_IS_SEQ(seq) \    ((seq) != NULL && (((CvSeq*)(seq))->flags & CV_MAGIC_MASK) == CV_SEQ_MAGIC_VAL)#define CV_SET_MAGIC_VAL             0x42980000

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -