OpenCV入门——基础

Posted 朝_风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV入门——基础相关的知识,希望对你有一定的参考价值。

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;   
    
技术分享

 

整理自——

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

 

以上是关于OpenCV入门——基础的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV最详细入门-python(代码全部可以直接运行)

史上最简单&最全&最基础&入门到精通的opencv图像处理 第一课:图像读入与灰度处理

18KW13/5-OpenCV入门-图像处理的一些基础操作

OpenCVQt + OpenCV 开发配置 + 入门知识(代码示例)

史上最简单&最全&最基础&入门到精通的opencv图像处理 第十九课:图像近似

在 Python 多处理进程中运行较慢的 OpenCV 代码片段