【OpenCV】矩阵的创建与释放

        矩阵有多种创建方法。最常见的方法是用cvCreateMat( ),它由多个原函数组成,如cvCreateMatHeader( )和cvCreateData( )。cvCreateMatHeader( )函数创建CvMat结构,不为数据分配内存,而cvCreateData( )函数只负责数据的内存分配。第三中方法是用函数cvCloneMat(CvMat*),它依据一个现有的矩阵创建一个新的矩阵。但这个矩阵不再需要时,可以调用函数cvReleaseMat(CvMat*)释放它。

1.创建矩阵

CvMat* cvCreateMat(
  int rows,                //行数
  int cols,                //列数
  int type                //矩阵元素类型
);


        type其结构为:CV_<bit_depth>(S|U|F)C<number_of_channels>,例如:CV_32FC1为32位浮点型单精度矩阵。

例程:

CvMat* mat=cvCreateMat(
  4,
  4,
  CV_32FC1
);



2.创建一个矩阵,不分配空间

CvMat* cvCreateMatHeader(
  int rows,
  int cols,
  int type
);


3.用一个现有的矩阵初始化矩阵

CvMat*cvInitMatHeader(
  CvMat* mat,
  int rows,
  int cols,
  int type,
  void* data=NULL,
  int step=CV_AUTOSTEP
);

4.初始化矩阵结构,不分配空间

CvMat cvMat(
  int rows,
  int cols,
  int type,
  void* data=NULL
);

5.复制矩阵

CvMat* cvCloneMat(
  const cvMat* mat
);

例程:

CvMat* mat1=cvCreateMat(
  4,
  4,
  CV_32FC1
);



 6.释放矩阵 
 

void cvReleaseMat(CvMat** mat);
例程:

CvMat* mat=cvCreateMat(
  4,
  4,
  CV_32FC1
);
cvReleaseMat(&mat);




猜你喜欢

转载自blog.csdn.net/Kigha/article/details/50879677