OpenCV入门(2)——基础

Mat基本图像容器:

基本上讲 Mat 是一个类,由两个数据部分组成:矩阵头包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵根据所选存储方法的不同矩阵可以是不同的维数的指针

  • OpenCV函数中输出图像的内存分配是自动完成的(如果不特别指定的话)。
  • 使用OpenCV的C++接口时不需要考虑内存释放问题。
  • 赋值运算符和拷贝构造函数( ctor )只拷贝信息头。
  • 使用函数 clone() 或者 copyTo() 来拷贝一副图像的矩阵。

存储方法:

这里讲述如何存储像素值。需要指定颜色空间数据类型。颜色空间是指对一个给定的颜色,如何组合颜色元素以对其编码。最简单的颜色空间要属灰度级空间,只处理黑色和白色,对它们进行组合可以产生不同程度的灰色。

“颜色空间”——红色、绿色和蓝色,有时为了表示透明颜色也会加入第四个元素 alpha (A)。

有很多的颜色系统,各有自身优势:

  • RGB是最常见的,这是因为人眼采用相似的工作机制,它也被显示设备所采用。
  • HSV和HLS把颜色分解成色调、饱和度和亮度/明度。这是描述颜色更自然的方式,比如可以通过抛弃最后一个元素,使算法对输入图像的光照条件不敏感。
  • YCrCb在JPEG图像格式中广泛使用。
  • CIE L*a*b*是一种在感知上均匀的颜色空间,它适合用来度量两个颜色之间的 距离 。

每个组成元素都有其自己的定义域,取决于其数据类型。如何存储一个元素决定了我们在其定义域上能够控制的精度。

显式地创建一个 Mat 对象

  • Mat() 构造函数

        Mat M(2,2, CV_8UC3, Scalar(0,0,255)); //行数,列数, Scalar 是个short型vector。指定这个能够使用指定的定制化值来初始化矩阵。
        cout << "M = " << endl << " " << M << endl << endl;   
    
Demo image of the matrix output

整理自——

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/mat%20-%20the%20basic%20image%20container/mat%20-%20the%20basic%20image%20container.html#matthebasicimagecontainer

原文地址:https://www.cnblogs.com/thunder-wu/p/6903408.html