CV::MAT
1 基础知识
MAT是opencv2.X里面新出现配合C++的n-dimensional dense array class。强烈推荐大家使用
我们先看一下结构:
class CV_EXPORTS Mat
{
public:
// ... a lot of methods ...
...
/*! includes several bit-fields:
- the magic signature
- continuity flag
- depth //深度
- number of channels //通道数 彩图rgb 3通道
*/
int flags;
//! the array dimensionality, >= 2
int dims; //维度
//! the number of rows and columns or (-1, -1) when the array has more than 2 dimensions
int rows, cols; //行,列
//! pointer to the data
uchar* data; //数据指针
//! pointer to the reference counter;
// when array points to user-allocated data, the pointer is NULL
int* refcount; //引用次数
// other members
...
};
数据类型属性:
type格式:
表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类型)+(通道数)。具体的有以下值:
CV_8UC1 CV_8UC2 CV_8UC3 CV_8UC4 |
---|
CV_8SC1 CV_8SC2 CV_8SC3 CV_8SC4 |
CV_16UC1 CV_16UC2 CV_16UC3 CV_16UC4 |
CV_16SC1 CV_16SC2 CV_16SC3 CV_16SC4 |
CV_32SC1 CV_32SC2 CV_32SC3 CV_32SC4 |
CV_32FC1 CV_32FC2 CV_32FC3 CV_32FC4 |
CV_64FC1 CV_64FC2 CV_64FC3 CV_64FC4 |
其中没有通道信息便是depth:
CV_8U - 8-bit unsigned integers ( 0..255 )
CV_8S - 8-bit signed integers ( -128..127 )
CV_16U - 16-bit unsigned integers ( 0..65535 )
CV_16S - 16-bit signed integers ( -32768..32767 )
CV_32S - 32-bit signed integers ( -2147483648..2147483647 )
CV_32F - 32-bit floating-point numbers ( -FLT_MAX..FLT_MAX, INF, NAN )
CV_64F - 64-bit floating-point numbers ( -DBL_MAX..DBL_MAX, INF, NAN )
U(unsigned integer)表示的是无符号整数,S(signed integer)是有符号整数,F(float)是浮点数。
step:内存地址
如需更详细信息请进
Mat这个类有两部分数据。一个是matrix header,这部分的大小是固定的,包含矩阵的大小,存储的方式,矩阵存储的地址等等。另一个部分是一个指向矩阵包含像素值的指