首先它们并不是函数,只是两个数据类型
OpenCV2.2以前的版本里它们稍微有点区别:
Mat特指2维矩阵
MatND是多维矩阵(>=3维)
但2.2以后它们被统一成Mat,Mat可以表示任意维矩阵
所以没必要在意MatND和Mat的区别,如果你用的是2.2以后的版本,统一使用Mat就行了。
简单的说,Mat特指2维矩阵,MatND是多维矩阵(>=3维);
Mat对象提供了size()、channels()和depth()等方法分别获得图像的大小、通道数和数值类型。上面的例子中,图像img的宽为512个像素,高为393个像素,有3个通道(channels),即图像中的每个像素的颜色用三个数值表示。每个通道的数值类型(depth)的编号为0,0表示无符号8bit整数。
MatND对象使用size和step属性保存每个轴的长度和每个轴的字节偏移量,它们和NumPy数组的shape和strides属性类似。但是这两个属性都是长度固定为32的整数数组。