Opencv3(初识Mat)

Mat

  1. 简介
  2. 创建
  3. 基本函数

1.简介

在早期的OpenCV1.x版本中,图像的处理是通过IplImage(该名称源于Intel的另一个开源库Intel Image Processing Library ,缩写成IplImage)结构来实现的。早期的OpenCV是用C语言编写,因此提供的借口也是C语言接口,其源代码完全是C的编程风格。IplImage结构是OpenCV矩阵运算的基本数据结构。

到OpenCV2.x版本,OpenCV开源库引入了面向对象编程思想,大量源代码用C++重写,Mat类 (Matrix的缩写) 是OpenCV用于处理图像而引入的一个封装类。从功能上讲,Mat类在IplImage结构的基础上进一步增强,并且,由于引入C++高级编程特性,Mat类的扩展性大大提高,Mat类的内容在后期的版本中不断丰富。[1]
参考
特性:

  1. 不必再手动开辟空间。
  2. 不必再在不需要的时候立即释放空间。

颜色空间

对于彩色方式则有更多种类的颜色空间,但不论哪种方式都是把颜色分成三个或者四个基元素,通过组合基元素可以产生所有的颜色。 RGB 颜色空间是最常用的一种颜色空间,这归功于它也是人眼内部构成颜色的方式。它的基色是红色、绿色和 蓝色,有时为了表示透明颜色也会加入第四个元素 alpha(A)。
颜色系统有很多 它们各有优势,具体如下

  • RGB 是最常见的 这是因为人眼采用相似的工作机制,它也被显示设备所采用 。
  • HSV 和HLS颜色分解成色调、饱和度和亮度/明度。这是描述颜色更自然的方式, 比如可以通过放弃最后 一个元素 使算法对输入图像的光照条件不敏感。
  • YCrCb在 JPEG 图像格式中广泛使用
  • CIE Lab是一种 种在感知上均匀的颜色空间,它适合用来度量两个颜色之间的距离。
    每个组成元素都有其向己的定义域,而定义域取决于其数据类型,如何存储一个元素决定了我们在其定义域上能够控制的精度。最小的数据类型是 char ,占一个字节或者8位,可以是有符号型 (0到255 之间)或无符号型( -127到+127之间)。尽管使用 三个char 型元素已经可以表示 1600 万种可能的颜色(使用 RGB颜色空间) ,但若使用 float(4字节 32 位)或 doubl(8 字节,64 位)则能给出更加精细的颜色分辨能力,但同时也要切记,增加元素的尺寸也会增加图像所占的内存空间。

2.Mat创建

  • 使用**Mat()**构造函数
    Mat M(row , col, CV 8UC3 , Scalar(O , O, 255 )) ;

  • 在c++中使用构造函数初始化
    int sz[3] = (2 , 2 , 2) ;
    Mat L(维数 , sz , CV 8UC , Scalar : : all(O)) ;

  • create函数
    M. create(row , col , CV 8UC(2)) ;

  • clone函数或者copyTo函数
    Mat RowClone = C. row(l) . clone() ;

3.基本函数

  • imread()函数
    imread (const string& filename,intflags=l );
    这里附上源码的英文的注解
    功能及参数官方介绍

  • imshow()函数
    imshow(const String& winname, InputArray mat);
    同附源码的英文注释
    功能及参数官方介绍

  • imwrite()函数
    imwrite( const String& filename, InputArray img, const std::vector& params = std::vector());
    同附源码的英文注释
    功能及参数官方介绍

结束

东西较多,只记录部分,仅做学习记录,不喜勿喷。

扫描二维码关注公众号,回复: 15598905 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_40482198/article/details/95970980