矩阵有多种创建方法。最常见的方法是用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);