一、使用Mat()构造函数函数
定义一个二维多通道图像3d
Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255)); cout << "M = " << endl << " " << M << endl; /* *2行2列 * CV_8UC3 :使用8为unsigned char型,每一个像素由3个元素组成 * Scalar:short类型向量: 使用指定的定制化来初始化矩阵 */
二、IpIImage* 转换为Mat对象code
IplImage *img = cvLoadImage("F:\\MyCode\\dcq.jpg", 1); Mat mtx = cvarrToMat(img, true); //转换IplImage * --->Mat
三、用 Mat类的Create成员函数对象
Mat M; M.create(4, 4, CV_8UC(3)); cout << "M = " << endl << " " << M << endl;
注意:此函数不能为矩阵设置初值,只是在改变尺寸时从新为矩阵数据开辟内存而已blog
四、用Matlab式的初始化方式内存
Mat M = Mat::eye(4, 4, CV_64F); cout << "M = " << endl << " " << M << endl; Mat Z = Mat::zeros(3, 3, CV_64F); cout << "Z = " << endl << " " << Z << endl; Mat F = Mat::ones(2, 2, CV_64F); cout << "F = " << endl << " " << F << endl;
五、class
Mat M = (Mat_<double>(3, 3) << 0, 1, 2, 1, 2, 3, 2, 3, 4) ; cout << "M = " << endl << " " << M << endl;
六、为一个已经存在的Mat对象建立一个新的信息头构造函数
Mat M = (Mat_<double>(3, 3) << 0, 1, 2, 1, 2, 3, 2, 3, 4) ; cout << "M = " << endl << " " << M << endl << endl << endl; Mat RowClone = M.row(1).clone(); cout << "RowClone=" << endl << " " <<RowClone << endl;
--im