在 OpenCV 中,Mat
是一个非常重要的类,用于表示多维数组,特别是用于存储图像数据。Mat
类可以处理 1D、2D 或 3D 数组,但在图像处理中,最常见的是使用它存储 2D 图像数据。
Mat
的基本结构
Mat
是一个矩阵类,它可以存储各种类型的数据,如整数、浮点数、向量等。每个 Mat
对象都有几个重要的成员变量来描述它的数据结构:
- 数据指针 (
data
):指向存储矩阵元素的实际内存位置。 - 尺寸 (
rows
和cols
):矩阵的行数和列数。 - 通道数 (
channels()
):表示图像的颜色通道数,例如灰度图是单通道(1 通道),RGB 图像是 3 通道。 - 步长 (
step
):每一行元素占用的字节数。 - 数据类型 (
type()
):每个矩阵元素的类型,通常以CV_<位数><数据类型><通道数>
的形式表示,比如CV_8UC3
表示 8 位无符号 3 通道的 RGB 图像。 - 深度 (
depth()
):存储图像数据的基本类型,如 8 位、16 位或 32 位。 - 引用计数器 (
refcount
):用于管理内存分配和释放。OpenCV 使用引用计数机制来共享数据和管理内存。
Mat
的数据类型表示
在 OpenCV 中,数据类型由常量 CV_<位数><类型><通道数>
表示:
- 位数:表示每个通道的数据位数,例如 8、16、32。
- 类型:
U
:无符号整数类型(unsigned)。S
:有符号整数类型(