網上搜索了很多,檢查中發現的信息劣勢,檢查源代碼
同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;
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
