OpennCV中Mat的属性介绍

来源:互联网 发布:华为算法工程师好进吗 编辑:程序博客网 时间:2024/05/19 22:01

Mat的常见属性

  • data:uchar类型的指针。Mat数据结构中Mat的头部和数据部分分开存储,data为指向Mat数据部分的指针。
  • dims: Mat矩阵的维度。
  • rows, cols: 当dims=2时,rows和cols分别矩阵的行列数。当dims>2时;rows = cols = -1.
  • channels():图像的通道数,当图像时由BGR构成时通道数为3,灰度图像的通道数为1.
  • type():表明Mat矩阵元素的类型和矩阵的通道数,有一系列的预定义常量组成,命名规则为CV_(位数)(元素类型)(通道数组成),其中U表示无符号整数,S表示有符号整数,F表示浮点数。例如CV_16UC3表示矩阵元素为16位无符号整形,通道数为3。
  • depth(): 矩阵中某一通道的元素类型,例如:矩阵为CV_16UC3,则depth为CV_16U。
  • elemSize(): 返回矩阵中每个元素所占的字节数,例如:矩阵类型为CV_16UC3,则返回 3*16/8 = 6bytes。
  • elemSize1(): 返回每个矩阵元素中单通道所使用的字节数,例如:矩阵类型为CV_16UC3,则返回16/8 = 2bytes。
  • u: UMatData类的一个指针,由于Mat A = B时只是复制Mat的头部,数据部分任然是共享的,所以用UMatData类来管理指向Mat数据部分的引用计数,它是一个原子操作。 
  • size: MatSize的一个实例,保存矩阵各个维度上元素的个数。
  • step: MatStep的一个实例,其源代码如下
    struct CV_EXPORTS MatStep{    MatStep();    explicit MatStep(size_t s);    const size_t& operator[](int i) const;    size_t& operator[](int i);    operator size_t() const;    MatStep& operator = (size_t s);    size_t* p;    size_t buf[2];protected:    MatStep& operator = (const MatStep&);};
    当dims=2时,p指向buf,buf[0]为矩阵中每一行元素的的字节数,buf[1]为矩阵中每个元素的字节;当dims>2时会为p重新分配空间,并且分配后p中元素的个数和维数相等,p[dims-1]中一直为矩阵中每个元素的字节数。

0 0