1、Mat类常用的构造方法
//无参数构造
Mat();
//创建行数为rows,列数为cols,类型为type的图像
Mat(int rows, int cols, int type);
//创建大小为size,类型为type的图像
Mat(Size size, int type);
//创建创建行数为rows,列数为cols,类型为type的图像,且全部元素(像素)初始化为 s
Mat(int rows, int cols, int type, const Scalar& s);
//创建大小为size,类型为type的图像,且全部元素(像素)初始化为 s
Mat(Size size, int type, const Scalar& s);
//将m赋值给新创建的对象,是浅拷贝
Mat(const Mat& m);
新建Mat类对象方法实例:
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
//创建空矩阵
Mat img1;
//创建6x6的8位单通道矩阵(图像)
Mat img2(6, 6, CV_8UC1);
//创建7x7的8位三通道矩阵(图像)
Mat img3(cv::Size(7, 7), CV_8UC3);
//创建8x8的32位三通道矩阵(图像),并且用cv::Scalar(0,255)填充
Mat img4(8, 8, CV_8UC3,cv::Scalar(0,255));
//创建7x7的8位三通道矩阵(图像),并且用填充cv::Scalar(1, 2, 3)填充
Mat img5(cv::Size(7, 7), CV_8UC3, cv::Scalar(1,2,3));
Mat img6(img2);
cout << img1 << endl;
cout << img2 << endl;
cout << img3 << endl;
cout << img4 << endl;
cout << img5 << endl;
cout << img6 << endl;
return 0;
}
2、Mat类常用方法
Mat::row(int y);//得到当前矩阵的第y行(从0开始),并由此创建一个Mat行矩阵,并返回
Mat::col(int x);//得到当前矩阵的第y列(从0开始),并由此创建一个Mat列矩阵,并返回
Mat::rowRange(int i, int j);//得到当前矩阵的第 i 行到第 j 行(左闭右开),并由此创建一个Mat矩阵,并返回
Mat::colRange(int i, int j);//得到当前矩阵的第 i 列到第 j 列(左闭右开),并由此创建一个Mat矩阵,并返回
void copyTo( OutputArray m ) const;//浅拷贝
Mat::clone();//深拷贝
void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const;//转换数据类型
Mat::zeros(int i, int j, int type);//创建i x j矩阵,类型是type,并元素初始化为0
Mat::zeros(Size size, int type);//同上
Mat::ones(int i, int j, int type);//创建i x j矩阵,类型是type,并元素初始化为1
Mat::ones(Size size, int type);//同上
Mat::eye(int i, int j, int type);//创建i x j矩阵,类型是type,并对角元素初始化为1
Mat::eye(Size size, int type);//同上
Mat::channels;//返回通道数
Mat::empty;//如果数组没有元素,则返回true
Mat::at;//返回对指定数组元素的引用
Mat::rows;//返回行数
Mat::cols;//返回列数