一.简介
二.数据类型缩写
1.小写
b = unsigned char
w = unsigned short
s = short
i = int
f = float
d = double
2.大写
U=无符号整型
S=符号整型
F=浮点型
3.像素值
typedef unsigned char uchar;
这里 uchar 表示无符号字符类型,通常用来描述成像素值
因为在 cv::Mat 图像类中,图像数据就是 uchar* data
单通道图像就是灰度图像,只有8位深度包含全黑全白(2的8次方=256种灰度等级)
二.矩阵类型
int type; //矩阵类型
宏命名规则:CV_(位数)+(数据类型)+(通道数)
1.8位
CV_8UC1 CV_8UC2 CV_8UC3 CV_8UC4 CV_8UC(n) CV_8SC1 CV_8SC2 CV_8SC3 CV_8SC4 CV_8SC(n)
2.16位
CV_16UC1 CV_16UC2 CV_16UC3 CV_16UC4 CV_16UC(n) CV_16SC1 CV_16SC2 CV_16SC3 CV_16SC4 CV_16SC(n)
3.32位
CV_32SC1 CV_32SC2 CV_32SC3 CV_32SC4 CV_32SC(n) CV_32FC1 CV_32FC2 CV_32FC3 CV_32FC4 CV_32FC(n)
4.64位
CV_64FC1 CV_64FC2 CV_64FC3 CV_64FC4 CV_64FC(n)
三.矩阵大小
Size size; //矩阵大小
四.矩阵行步长
size_t step; //矩阵行步长
step=AUTO_STEP;
五.通道像素值
const Scalar& s; //通道像素值,最多可表示4个通道的像素值
六.矩阵维度
int ndims; //矩阵维度
七.矩阵向量
typedef Vec<uchar, 2> Vec2b;
typedef Vec<uchar, 3> Vec3b;
typedef Vec<uchar, 4> Vec4b;
typedef Vec<short, 2> Vec2s;
typedef Vec<short,3> Vec3s;
typedef Vec<short,4> Vec4s;
typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;
typedef Vec<float, 2> Vec2f;
typedef Vec<float, 3> Vec3f;
typedef Vec<float, 4> Vec4f;
typedef Vec<float, 6> Vec6f;
typedef Vec<double, 2> Vec2d;
typedef Vec<double, 3> Vec3d;
typedef Vec<double, 4> Vec4d;
typedef Vec<double, 6> Vec6d;
其中 typedef Vec<uchar,3> Vec3b 最常用,用来表示三通道图像数据,分别代表了 R G B 三个通道不同的像素值
RGB图像有24位深度(2的24次方=16777216),每个通道有8位深度(2的8次方=256)