一、CvMat结构体
typedef struct CvMat{ int type; int step; int* refcount; int hdr_refcount; union { uchar* ptr; short* s; int* i; float* fl; double* db; } data; union { int rows; int height; }; union { int cols; int width; };} CvMat;二、矩阵的创建和释放
CvMat* cvCreateMat(int rows,int cols,int type); CvMat* cvCreateMatHeader(int rows,int cols,int type); CvMat* cvInitMatHeader(int rows,int cols,int type,void* data = NULL,int step = CV_AUTOSTEP); CvMat* cvMat(int rows,int cols,int type,void* data = NULL) CvMat* cvCloneMat(const cvMat* mat); cvReleaseMat(CvMat** mat);
三、矩阵数据的存取 1·简单的方法 利用CV_MAT_ELEM()或CV_MAT_ELEM_PTR()宏 例:CV_MAT_ELEM() CvMat* mat = cvCreateMat(5,5,CV_32FC1); float element_3_2 = CV_MAT_ELEM( *mat,float,3,2); 例:CV_MAT_ELEM_PTR() CvMat* mat = cvCreateMat(5,5,CV_32FC1); float element_3_2 = 7.7; (float)CV_MAT_ELEM_PTR(*mat,3,2) = element_3_2; 2·麻烦的方法 指针访问矩阵结构cvPtr*D家族和cvGet*D、cvSet*D家族;
uchar* cvPtr1D(const CvArr* arr,int idx0,int* type = NULL); uchar* cvPtr2D(const CvArr* arr,int idx0,int idx1,int* type = NULL); uchar* cvPtr3D(const CvArr* arr,int idx0,int idx1,int idx2,int* type = NULL); uchar* cvPtrND(const CvArr* arr,int* idx,int* type = NULL,int create_node = 1,unsigned* PRecalc_hashval = NULL); double cvGetReal1D(const CvArr* arr,int idx0); double cvGetReal2D const CvArr* arr,int idx0,int idx1); double cvGetReal3D(const CvArr* arr,int idx0,int idx1,int idx2); double cvGetRealND(const CvArr* arr,int* idx); CvScalar cvGet1D(const CvArr* arr,int idx0); CvScalar cvGet2D(const CvArr* arr,int idx0,int idx1 ); CvScalar cvGet3D(const CvArr* arr,int idx0,int idx1,int idx2 ); CvScalar cvGetND(const CvArr* arr,int* idx); double cvSetReal1D(const CvArr* arr,int idx0); double cvSetReal2D const CvArr* arr,int idx0,int idx1); double cvSetReal3D(const CvArr* arr,int idx0,int idx1,int idx2); double cvSetRealND(const CvArr* arr,int* idx); CvScalar cvSet1D(const CvArr* arr,int idx0); CvScalar cvSet2D(const CvArr* arr,int idx0,int idx1 ); CvScalar cvSet3D(const CvArr* arr,int idx0,int idx1,int idx2 ); CvScalar cvSetND(const CvArr* arr,int* idx);
新闻热点
疑难解答