OpenCV cv::Mat.type() 以及类型数据转换
在 OpenCV 中,cv::Mat
用于表示图像或矩阵。OpenCV 提供了一系列预定义的枚举值,这些枚举值是整数常量,可以直接用于表示特定的数据类型和通道数。
cv::Mat.type()
方法返回一个整数值(如 CV_8U)
,用于获取矩阵的数据类型和通道数,可以通过预定义的枚举值来表示。
头文件位置:opencv2/core/core.hpp
或 opencv2/core/mat.hpp
C1 | C2 | C3 | C4 | |
CV_8U | 0 | 8 | 16 | 24 |
CV_8S | 1 | 9 | 17 | 25 |
CV_16U | 2 | 10 | 18 | 26 |
CV_16S | 3 | 11 | 19 | 27 |
CV_32S | 4 | 12 | 20 | 28 |
CV_32F | 5 | 13 | 21 | 29 |
CV_64F | 6 | 14 | 22 | 30 |
//数据类型转换
void cv::Mat::convertTo(
OutputArray dst,
int rtype,
double alpha = 1,
double beta = 0) const;
//alpha 和 beta:可选参数,用于线性变换 dst=src×α+β。
在进行类型转换时,要注意目标数据类型的范围。例如,将32位浮点数转换为8位无符号整数时,可能会丢失精度或发生溢出。
//图像颜色模型转换
void cvtColor(
InputArray src,
OutputArray dst,
int code, //COLOR_BGR2HSV COLOR_BGR2RGB COLOR_RGB2BGR COLOR_BGR2LAB等
int dstCn = 0 );
在 OpenCV 中,图像的颜色通道顺序默认是 BGR(蓝、绿、红),而不是常见的 RGB(红、绿、蓝)顺序。这是 OpenCV 的设计选择,主要是为了与早期的图像处理库和硬件设备兼容。