用于新建一个二维矩阵的例程:
cvMat* cvCreateMat(int rows, int cols, int type);
type预定义类型:CV_<bit_depth>(S|U|F)C<number_of_channels> 例:32位浮点型数据(CV_32FC1)、无符号的8位三元组的整型数据(CV_8UC3)
矩阵的创建和释放
//Create a new rows by cols matrix of type 'type'
//
CvMat* cvCreateMat(int rows, int cols, int type);
//Create only matrix header without allocating data
//
CvMat* cvCreateMatHeader(int rows, int cols, int type);
//Initialize header on existing CvMat structure
//
CvMat* cvInitMatHeader(CvMat* mat, int rows, int cols, int type, void* data=NULL, int step=CV_AUTOSTEP);
//Like cvInitMatHeader() but allocate CvMat as well
//
CvMat cvMat(int rows, int cols, int type, vodi* data=NULL);
//Allocate a new matrix just like the matrix 'mat'
//
CvMat* cvCloneMat(const cvMat* mat);
//Free the matrix 'mat', both header and data
//
void cvReleaseMat(CVMat **mat);
用固定函数创建一个OpenCV矩阵
#include <cv.h>
#include <highgui.h>
void createMat(void) { //Create an opencv matrix containing some fixed data // float vals[] = {0.866025, -0.500000, 0.500000, 0.866025}; CvMat rotmat; cvInitMatHeader(&rotmat, 2, 2, CV_32FC1, vals); for (int i=0; i<rotmat.width; i++) { for (int j=0; j<rotmat.height; j++) { CvScalar scalar=cvGet2D(&rotmat, j, i); cout<<scalar.val[0]<<" "; } cout<<endl; } }