1. 程式人生 > >OpenCv學習筆記(五)--建立Mat矩陣物件常用的幾種方式

OpenCv學習筆記(五)--建立Mat矩陣物件常用的幾種方式

/*********************************************************************************************
程式功能:
        建立矩陣的幾種方法
編寫環境:
        OpenCv2.4.8+VS2010
地點時間:
        陝西師範大學 2016.4.25
作者資訊:
        九月
**********************************************************************************************/
/********************************【標頭檔案.名稱空間包含部分】***********************************/
#include<opencv2/core/core.hpp>          //OpenCv的核心模組,包含OpenCv的基本資料機構和一些繪圖函式
#include<opencv2/highgui/highgui.hpp>    //包含高層的圖形使用者介面,比如,namedWindow等函式
#include<iostream>


using namespace cv;
using namespace std;


/*****************************************【main()函式】**************************************/
int main(int argc,char** argv)
{
    //【1】使用Mat的建構函式---建立矩陣
	//Mat(int rows, int cols, int type, const Scalar& s);

	Mat M(2,2,CV_8UC3,Scalar(0,0,255));                    //指定矩陣的大小和型別,並用指定的資料進行填充
	cout<<"M="<<endl<<" "<<M<<endl;


	//【2】為已經存在的IplImage指標建立資訊頭
	//Mat(const IplImage* img, bool copyData=false);

	IplImage* img=cvLoadImage("D:\\scenery.png",CV_LOAD_IMAGE_COLOR);
	Mat mtx(img);                                           //convert Iplimage*--->Mat
	imshow("【1】IplImage*載入的原始圖片",mtx);
	

	//【3】使用成員函式create()對Mat類物件進行初始化
	//【3】該方法不能為矩陣設定初始值,只是在改變尺寸時為矩陣資料重新分配記憶體
	M.create(4,4,CV_8UC2);                                  //建立一個4行4列,2個通道的矩陣
	cout<<"M="<<endl<<" "<<M<<endl<<endl;
	
	//【4】Matlab形式的初始化方式:zeros(),ones(),eyes()。使用以下方式指定尺寸和資料型別。
	Mat E=Mat::eye(4,4,CV_8UC1);                             //4行4列的對角矩陣
	cout<<"E="<<endl<<" "<<E<<endl<<endl;
	Mat Z=Mat::zeros(3,3,CV_8UC1);                           //3行3列的零矩陣
	cout<<"Z="<<endl<<" "<<Z<<endl<<endl;
	Mat O=Mat::ones(3,3,CV_32F);
	cout<<"O="<<endl<<" "<<O<<endl<<endl;                    //3行3列的單位矩陣

	waitKey(0);
	//system("pause");
}