前言
最近开始接触opencv,做了个简单的入门,经过各种的安装和编译,也算是初出茅庐,感受到计算机视觉的强大。这里很开森自己又要开始永无止境的前进啦!今天就记录下Mat类的用法。
一、
Mat 类是一个用于保存图像数据或者矩阵数据的数据结构,可以说是一个矩阵类,在默认情况下其尺寸大小为0。当然也可以指定该对象的初始尺寸,例如:
1 Mat image(50, 100, Scalar(100));
其中前两个参数即为图像的长和宽,即50行,100列。Scalar即为像素点赋值,0即为全黑,255即为全白,其可以表示 4 元素向量,分别对应图像的 4 个通道,B、G、R、A,在 Opencv 中广泛用于传递像素值,是一种含 4 个 double 值的结构体类型:
1 typedef struct Scalar 2 { 3 double val[4]; 4 }Scalar;
当然一般默认的话就是默认显示原图。
二、
对图像进行操作分为载入、显示和输出。
1、载入
1 Mat imread(const string& filename, intflags = 1); //原型
2 Mat srcImage = imread("图片路径", 2 | 4); //载入无损的原图像
3 Mat srcImage2 = imread("图像路径", 0); //载入灰度图像
4 Mat srcImage3 = imread("图像路径", 130); //载入3通道的彩色图像
这里第二个参数是载入标识,指定一个加载图像的颜色类型。
》flags > 0 返回一个的彩色图像
》flags = 0 返回一个的灰度图像
》flags < 0 返回一个的包含alpha通道的加载图像
2、显示
1 void imshow(const string& winname, InputArray mat);
》第一个参数:const string&类型的winname,显示窗口标题
》第二个参数:需要显示的图像
创建窗口函数
1 void namedWindow(const string& winname, int falgs = WINDW_AUTOSISE);
》第一个参数:const string&类型的winname,显示窗口标题名称
》第二个参数:窗口标识
3、输出到文件
1 bool imread(const string& filename, InputArray img, const vector<int>& params = vector<int>());
》第一个参数:const string&类型的filename,需要写入的文件名
》第二个参数:Mat类型的图像数据
》第三个参数:const vector<int>& 类型的一个 params,表示为特定格式保存的参数编码,一般保持默认就ok
这些就是Mat类的图像载入、显示和输出方法。方便以后查阅。