OpennCV中Mat的属性介绍

本文详细介绍了OpenCV中Mat类的各种属性,包括data、dims、rows、cols、channels、type、depth、elemSize、elemSize1、u、size和step。这些属性对于理解Mat的工作原理和进行高效的图像处理非常重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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]中一直为矩阵中每个元素的字节数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值