Mat() opencv Scalar::all(0)

原文链接: https://my.oschina.net/gujianhan/blog/201995

https://my.oschina.net/gujianhan/blog/201995

撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>

Mat 不但是一个很赞的图像容器类,它同时也是一个通用的矩阵类,所以可以用来创建和操作多维矩阵。创建一个Mat对象有多种方法:
  • Mat() 构造函数

        Mat M(2,2, CV_8UC3, Scalar(0,0,255)); 
        cout << "M = " << endl << " " << M << endl << endl;

对于二维多通道图像,首先要定义其尺寸,即行数和列数。

然后,需要指定存储元素的数据类型以及每个矩阵点的通道数。为此,依据下面的规则有多种定义

CV_[The number of bits per item][Signed or Unsigned][Type Prefix]C[The channel number]

比如 CV_8UC3 表示使用8位的 unsigned char 型,每个像素由三个元素组成三通道。预先定义的通道数可以多达四个。Scalar 是个short型vector。指定这个能够使用指定的定制化值来初始化矩阵。当然,如果你需要更多通道数,你可以使用大写的宏并把通道数放在小括号中,如下所示

  • 在 C\C++ 中通过构造函数进行初始化

        int sz[3] = {2,2,2}; 
        Mat L(3,sz, CV_8UC(1), Scalar::all(0));


Scalar::all(0)就是给每个通道都赋值0

你可能感兴趣的:(OpenCV)