網上搜索了很多,檢查中發現的信息劣勢,檢查源代碼
同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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

