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

相關文章
相關標籤/搜索