Opencv2出现以后图像的操作可以不用再用指针的形式啦,用Mat类矩阵能够很方便的进行矩阵运算。Mat类包含两部分:矩阵头和指向矩阵像素值的指针。一般复制操作只是复制了矩阵头和指向矩阵的指针,并不会复制矩阵本身的数据。一些基本操作如下:
Mat A, C; //只创建了矩阵头
A = imread(argv[1], CV_LOAD_IMAGE_COLOR); //创建方法
Mat B(A); //复制
C = A; //赋值
感兴趣区域ROI操作:
Mat D(A, Rect(10,10,100,100)); //使用矩形区域创建ROI
Mat E = A(Range::all(), Range(1,3)); //使用行列边界创建
当需要对矩阵数据本身进行复制的时候可以使用clone()和CopyTo()函数:
Mat F = A.clone();
Mat G;
A.copyTo(G);
除了使用Mat对图像进行操作外,也可以对mat进行一般的矩阵操作。创建Mat对象的方式有:
1. Mat() 构造
Mat M(2,2,CV_8UC3, Scalar(0,0,255));
Cout<<"M ="<<endl<<" "<<M<<endl;
2.通过构造函数初始化矩阵