OpenCV3之显式建立Mat对象的7种方法

一、使用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

相关文章
相关标签/搜索