Mat 类简析

前言

  最近开始接触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类的图像载入、显示和输出方法。方便以后查阅。

原文地址:https://www.cnblogs.com/shi-win-snoopy/p/12303494.html