矩阵的创建

来源:互联网 发布:vb.net 类属性 简写 编辑:程序博客网 时间:2024/06/05 08:45

摘要:矩阵的创建有许多创建方法。最常见的方法是用cvCreateMat(),它是由多个原函数组成cvCreateMatHeader()函数创建cvMat结构,不为数据分配内存,cvCreateData()函数只负责内存的分配。还可以用函数cvCloneMat,它依据一个现有的矩阵创建一个新的矩阵。当这个矩阵不需要时,可以调用函数cvReleaseMat释放它。

关键字:矩阵的创建 

#include<opencv3.0/core/core.hpp>          //OpenCv的核心模块,包含OpenCv的基本数据机构和一些绘图函数  
#include<opencv3.0/highgui/highgui.hpp>    //包含高层的图形用户界面,比如,namedWindow等函数  
#include<iostream>  
  
  
using namespace cv;  
using namespace std;  


  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");  
}  


一旦我们创建了一个矩阵,就可以查询数组定义和数据访问。