OpenCV学习:Mat类详细解析+源码剖析(二)构造函数

本文深入探讨OpenCV中的Mat类,重点解析其众多构造函数的用途。矩阵作为图像处理的基础,其重要性不言而喻,因此Mat类的实现非常全面。文章提到了如何直接声明和详细定义矩阵,并指出alignSize函数与内存字节数量的关联。

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

Mat类的构造函数,析构函数:

Mat类的构造函数与析构函数太多了,真的太多了,这是可以理解的。矩阵是图像的基本数据结构,对于数字图像处理的人来说,矩阵是我们看待图像的一个重要角度,甚至是一个最主要的角度,因为,我们做的所有动作几乎都是在矩阵的基础之上完成的!矩阵是如此得基础,如此得任重道远,因此,矩阵类的实现自然不能怠慢。在具体应用上,有时我们直接声明一个矩阵了事,比如Mat img;有时,我们又需要详细地定义出矩阵的维度以及长、宽、数据类型等信息:Mat img(width,height,CV_8U);这就直接导致了Mat类一个庞大的构造函数群,如下所示:

 Mat::Mat()
 Mat::Mat(int rows, int cols, int type)
 Mat::Mat(Size size, int type)
 .....
 Mat::Mat(int ndims, const int* sizes, int type, void* data, const size_t* steps=0)
 Mat::Mat(const Mat& m, const Range* ranges)
浩浩荡荡,总共20个函数,一定不要怕这些函数,到构造函数的定义部分去看,其实这些函数基本都调用了下面create函数族群:

  void create(int rows, int cols, int type);
  void create(Size size, int type);
  void create(int ndims, const int* sizes, int type);
举个例子,在构造函数Mat::Mat(int rows,int cols,int type)中:

inline Mat::Mat(Size _sz, int _type) : size(&rows)
{
    initEmpty
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值