zoukankan      html  css  js  c++  java
  • Opencv笔记(1) 命名规则数据结构(CvMat,...)

    网上搜索了很多,检查中发现的信息劣势,检查源代码

    同Cv为类的开始。包含详细的数据不(仅存储指针)

    CvMat

    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;
    <pre name="code" class="cpp">
    
    #ifdef __cplusplus union { int rows; int height; }; union { int cols; int width; };#else int rows; int cols;#endif}CvMat;

    
    
    <pre name="code" class="cpp">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 = m.cols*CV_ELEM_SIZE(type);
        m.data.ptr = (uchar*)data;
        m.refcount = NULL;
        m.hdr_refcount = 0;
    
        return m;
    }
    




    
    
    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*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col];
        else
        {
            assert( type == CV_64FC1 );
            return ((double*)(void*)(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*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (float)value;
        else
        {
            assert( type == CV_64FC1 );
            ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (double)value;
        }
    }
    
    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;
    
    /* Basic element of the file storage - scalar or collection: */
    typedef struct CvFileNode
    {
        int tag;
        struct CvTypeInfo* info; /* type information
                (only for user-defined object, for others it is 0) */
        union
        {
            double f; /* scalar floating-point number */
            int i;    /* scalar integer number */
            CvString str; /* text string */
            CvSeq* seq; /* sequence (ordered collection of file nodes) */
            CvFileNodeHash* map; /* map (collection of named file nodes) */
        } data;
    }
    CvFileNode;
    




  • 相关阅读:
    React性能优化记录(不定期更新)
    JSX设置CSS样式详解
    org.tinygroup.htmlparser-Html解析器
    org.tinygroup.application-应用启动框架
    org.tinygroup.beancontainer-IOC、AOP框架
    org.tinygroup.vfs-虚拟文件系统
    org.tinygroup.templateengine-模板引擎
    org.tinygroup.dbfilter
    org.tinygroup.templateweb-模板文件处理器
    org.tinygroup.flow-流程引擎
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4561362.html
Copyright © 2011-2022 走看看