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

📄 cxtypes.h

📁 将OpenCV移植到DSP上
💻 H
📖 第 1 页 / 共 4 页
字号:
#define CV_64FC1 CV_MAKETYPE(CV_64F,1)#define CV_64FC2 CV_MAKETYPE(CV_64F,2)#define CV_64FC3 CV_MAKETYPE(CV_64F,3)#define CV_64FC4 CV_MAKETYPE(CV_64F,4)#define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))#define CV_AUTO_STEP  0x7fffffff#define CV_WHOLE_ARR  cvSlice( 0, 0x3fffffff )#define CV_MAT_CN_MASK          ((CV_CN_MAX - 1) << CV_CN_SHIFT)#define CV_MAT_CN(flags)        ((((flags) & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1)#define CV_MAT_DEPTH_MASK       (CV_DEPTH_MAX - 1)#define CV_MAT_DEPTH(flags)     ((flags) & CV_MAT_DEPTH_MASK)#define CV_MAT_TYPE_MASK        (CV_DEPTH_MAX*CV_CN_MAX - 1)#define CV_MAT_TYPE(flags)      ((flags) & CV_MAT_TYPE_MASK)#define CV_MAT_CONT_FLAG_SHIFT  14#define CV_MAT_CONT_FLAG        (1 << CV_MAT_CONT_FLAG_SHIFT)#define CV_IS_MAT_CONT(flags)   ((flags) & CV_MAT_CONT_FLAG)#define CV_IS_CONT_MAT          CV_IS_MAT_CONT#define CV_MAT_TEMP_FLAG_SHIFT  15#define CV_MAT_TEMP_FLAG        (1 << CV_MAT_TEMP_FLAG_SHIFT)#define CV_IS_TEMP_MAT(flags)   ((flags) & CV_MAT_TEMP_FLAG)#define CV_MAGIC_MASK       0xFFFF0000#define CV_MAT_MAGIC_VAL    0x42420000#define CV_TYPE_NAME_MAT    "opencv-matrix"typedef struct CvMat{    int type;    int step;    /* for internal use only */    int* refcount;    int hdr_refcount;    union    {        uchar* ptr;        short* s;        int* i;        float* fl;        double* db;    } data;#ifdef __cplusplus    union    {        int rows;        int height;    };    union    {        int cols;        int width;    };#else    int rows;    int cols;#endif}CvMat;#define CV_IS_MAT_HDR(mat) \    ((mat) != NULL && \    (((const CvMat*)(mat))->type & CV_MAGIC_MASK) == CV_MAT_MAGIC_VAL && \    ((const CvMat*)(mat))->cols > 0 && ((const CvMat*)(mat))->rows > 0)#define CV_IS_MAT(mat) \    (CV_IS_MAT_HDR(mat) && ((const CvMat*)(mat))->data.ptr != NULL)#define CV_IS_MASK_ARR(mat) \    (((mat)->type & (CV_MAT_TYPE_MASK & ~CV_8SC1)) == 0)#define CV_ARE_TYPES_EQ(mat1, mat2) \    ((((mat1)->type ^ (mat2)->type) & CV_MAT_TYPE_MASK) == 0)#define CV_ARE_CNS_EQ(mat1, mat2) \    ((((mat1)->type ^ (mat2)->type) & CV_MAT_CN_MASK) == 0)#define CV_ARE_DEPTHS_EQ(mat1, mat2) \    ((((mat1)->type ^ (mat2)->type) & CV_MAT_DEPTH_MASK) == 0)#define CV_ARE_SIZES_EQ(mat1, mat2) \    ((mat1)->height == (mat2)->height && (mat1)->width == (mat2)->width)#define CV_IS_MAT_CONST(mat)  \    (((mat)->height|(mat)->width) == 1)/* size of each channel item,   0x124489 = 1000 0100 0100 0010 0010 0001 0001 ~ array of sizeof(arr_type_elem) */#define CV_ELEM_SIZE1(type) \    ((((sizeof(size_t)<<28)|0x8442211) >> CV_MAT_DEPTH(type)*4) & 15)/* 0x3a50 = 11 10 10 01 01 00 00 ~ array of log2(sizeof(arr_type_elem)) */#define CV_ELEM_SIZE(type) \    (CV_MAT_CN(type) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> CV_MAT_DEPTH(type)*2) & 3))/* inline constructor. No data is allocated internally!!!   (use together with cvCreateData, or use cvCreateMat instead to   get a matrix with allocated data) */CV_INLINE CvMat cvMat( int rows, int cols, int type, void* data CV_DEFAULT(NULL)){    CvMat m;    assert( (unsigned)CV_MAT_DEPTH(type) <= CV_64F );    type = CV_MAT_TYPE(type);    m.type = CV_MAT_MAGIC_VAL | CV_MAT_CONT_FLAG | type;    m.cols = cols;    m.rows = rows;    m.step = rows > 1 ? m.cols*CV_ELEM_SIZE(type) : 0;    m.data.ptr = (uchar*)data;    m.refcount = NULL;    m.hdr_refcount = 0;    return m;}#define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size )  \    (assert( (unsigned)(row) < (unsigned)(mat).rows &&   \             (unsigned)(col) < (unsigned)(mat).cols ),   \     (mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col))#define CV_MAT_ELEM_PTR( mat, row, col )                 \    CV_MAT_ELEM_PTR_FAST( mat, row, col, CV_ELEM_SIZE((mat).type) )#define CV_MAT_ELEM( mat, elemtype, row, col )           \    (*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))CV_INLINE  double  cvmGet( const CvMat* mat, int row, int col ){    int type;    type = CV_MAT_TYPE(mat->type);    assert( (unsigned)row < (unsigned)mat->rows &&            (unsigned)col < (unsigned)mat->cols );    if( type == CV_32FC1 )        return ((float*)(mat->data.ptr + (size_t)mat->step*row))[col];    else    {        assert( type == CV_64FC1 );        return ((double*)(mat->data.ptr + (size_t)mat->step*row))[col];    }}CV_INLINE  void  cvmSet( CvMat* mat, int row, int col, double value ){    int type;    type = CV_MAT_TYPE(mat->type);    assert( (unsigned)row < (unsigned)mat->rows &&            (unsigned)col < (unsigned)mat->cols );    if( type == CV_32FC1 )        ((float*)(mat->data.ptr + (size_t)mat->step*row))[col] = (float)value;    else    {        assert( type == CV_64FC1 );        ((double*)(mat->data.ptr + (size_t)mat->step*row))[col] = (double)value;    }}CV_INLINE int cvCvToIplDepth( int type ){    int depth = CV_MAT_DEPTH(type);    return CV_ELEM_SIZE1(depth)*8 | (depth == CV_8S || depth == CV_16S ||           depth == CV_32S ? IPL_DEPTH_SIGN : 0);}/****************************************************************************************\*                       Multi-dimensional dense array (CvMatND)                          *\****************************************************************************************/#define CV_MATND_MAGIC_VAL    0x42430000#define CV_TYPE_NAME_MATND    "opencv-nd-matrix"#define CV_MAX_DIM            32#define CV_MAX_DIM_HEAP       (1 << 16)typedef struct CvMatND{    int type;    int dims;    int* refcount;    int hdr_refcount;    union    {        uchar* ptr;        float* fl;        double* db;        int* i;        short* s;    } data;    struct    {        int size;        int step;    }    dim[CV_MAX_DIM];}CvMatND;#define CV_IS_MATND_HDR(mat) \    ((mat) != NULL && (((const CvMatND*)(mat))->type & CV_MAGIC_MASK) == CV_MATND_MAGIC_VAL)#define CV_IS_MATND(mat) \    (CV_IS_MATND_HDR(mat) && ((const CvMatND*)(mat))->data.ptr != NULL)/****************************************************************************************\*                      Multi-dimensional sparse array (CvSparseMat)                      *\****************************************************************************************/#define CV_SPARSE_MAT_MAGIC_VAL    0x42440000#define CV_TYPE_NAME_SPARSE_MAT    "opencv-sparse-matrix"struct CvSet;typedef struct CvSparseMat{    int type;    int dims;    int* refcount;    int hdr_refcount;    struct CvSet* heap;    void** hashtable;    int hashsize;    int valoffset;    int idxoffset;    int size[CV_MAX_DIM];}CvSparseMat;#define CV_IS_SPARSE_MAT_HDR(mat) \    ((mat) != NULL && \    (((const CvSparseMat*)(mat))->type & CV_MAGIC_MASK) == CV_SPARSE_MAT_MAGIC_VAL)#define CV_IS_SPARSE_MAT(mat) \    CV_IS_SPARSE_MAT_HDR(mat)/**************** iteration through a sparse array *****************/typedef struct CvSparseNode{    unsigned hashval;    struct CvSparseNode* next;}CvSparseNode;typedef struct CvSparseMatIterator{    CvSparseMat* mat;    CvSparseNode* node;    int curidx;}CvSparseMatIterator;#define CV_NODE_VAL(mat,node)   ((void*)((uchar*)(node) + (mat)->valoffset))#define CV_NODE_IDX(mat,node)   ((int*)((uchar*)(node) + (mat)->idxoffset))/****************************************************************************************\*                                         Histogram                                      *\****************************************************************************************/typedef int CvHistType;#define CV_HIST_MAGIC_VAL     0x42450000#define CV_HIST_UNIFORM_FLAG  (1 << 10)/* indicates whether bin ranges are set already or not */#define CV_HIST_RANGES_FLAG   (1 << 11)#define CV_HIST_ARRAY         0#define CV_HIST_SPARSE        1#define CV_HIST_TREE          CV_HIST_SPARSE/* should be used as a parameter only,   it turns to CV_HIST_UNIFORM_FLAG of hist->type */#define CV_HIST_UNIFORM       1typedef struct CvHistogram{    int     type;    CvArr*  bins;    float   thresh[CV_MAX_DIM][2]; /* for uniform histograms */    float** thresh2; /* for non-uniform histograms */    CvMatND mat; /* embedded matrix header for array histograms */}CvHistogram;#define CV_IS_HIST( hist ) \    ((hist) != NULL  && \     (((CvHistogram*)(hist))->type & CV_MAGIC_MASK) == CV_HIST_MAGIC_VAL && \     (hist)->bins != NULL)#define CV_IS_UNIFORM_HIST( hist ) \    (((hist)->type & CV_HIST_UNIFORM_FLAG) != 0)#define CV_IS_SPARSE_HIST( hist ) \    CV_IS_SPARSE_MAT((hist)->bins)#define CV_HIST_HAS_RANGES( hist ) \    (((hist)->type & CV_HIST_RANGES_FLAG) != 0)/****************************************************************************************\*                      Other supplementary data type definitions                         *\****************************************************************************************//*************************************** CvRect *****************************************/typedef struct CvRect{    int x;    int y;    int width;    int height;}CvRect;CV_INLINE  CvRect  cvRect( int x, int y, int width, int height ){    CvRect r;    r.x = x;    r.y = y;    r.width = width;    r.height = height;    return r;}CV_INLINE  IplROI  cvRectToROI( CvRect rect, int coi ){    IplROI roi;    roi.xOffset = rect.x;    roi.yOffset = rect.y;    roi.width = rect.width;    roi.height = rect.height;    roi.coi = coi;    return roi;}CV_INLINE  CvRect  cvROIToRect( IplROI roi ){    return cvRect( roi.xOffset, roi.yOffset, roi.width, roi.height );}/*********************************** CvTermCriteria *************************************/#define CV_TERMCRIT_ITER    1#define CV_TERMCRIT_NUMBER  CV_TERMCRIT_ITER#define CV_TERMCRIT_EPS     2typedef struct CvTermCriteria{    int    type;  /* may be combination of                     CV_TERMCRIT_ITER                     CV_TERMCRIT_EPS */    int    max_iter;    double epsilon;}CvTermCriteria;CV_INLINE  CvTermCriteria  cvTermCriteria( int type, int max_iter, double epsilon ){    CvTermCriteria t;    t.type = type;    t.max_iter = max_iter;    t.epsilon = (float)epsilon;    return t;}/******************************* CvPoint and variants ***********************************/typedef struct CvPoint{    int x;    int y;}CvPoint;CV_INLINE  CvPoint  cvPoint( int x, int y ){    CvPoint p;    p.x = x;    p.y = y;    return p;}typedef struct CvPoint2D32f{    float x;    float y;}CvPoint2D32f;

⌨️ 快捷键说明

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