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