前言
今天主要看了opencv3.4.1的Mat::create函数源码,因为这是最基础的,所有图像处理函数都要用到create和Mat类。
Mat类主要结构
Mat类之前了解过,最重要的信息如下截图。size是行数,step是列数*数据类型字节。

Mat::create主要处理函数
- setSize(*this, d, _sizes, 0, true);
此函数作用:设置对象的size相关参数,包括行和列,数据类型及像素占用字节。 - u = a->allocate(dims, size, _type, 0, step.p, 0, USAGE_DEFAULT);
此函数作用:在RAM中为其分配空间。并且将数据指针绑定到Mat类对象中。allocate中有一 个alignPtr函数,主要是将指针对齐,使指针地址能够被16整除。 - finalizeHdr(*this);
此函数的作用是为Mat类对象绑定写尾指针及限制地址指针等。
总结
Mat::create的步骤就是先确认size然后分配空间最后绑定地址到Mat类对象。
网友评论