OpenCV2:先导篇 基础数据类型

一.简介

二.数据类型缩写

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)

原文地址:https://www.cnblogs.com/k5bg/p/11096507.html