/********************************************************************************************* 程序功能: 创建矩阵的几种方法 编写环境: 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"); }