OpenCV cv::Mat.type() 以及类型数据转换

在 OpenCV 中,cv::Mat 用于表示图像或矩阵。OpenCV 提供了一系列预定义的枚举值,这些枚举值是整数常量,可以直接用于表示特定的数据类型和通道数。

cv::Mat.type() 方法返回一个整数值(如 CV_8U),用于获取矩阵的数据类型和通道数,可以通过预定义的枚举值来表示。
头文件位置:opencv2/core/core.hppopencv2/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 |

cpp 复制代码
//数据类型转换
void cv::Mat::convertTo(
OutputArray dst, 
int rtype, 
double alpha = 1, 
double beta = 0) const;
//alpha 和 beta:可选参数,用于线性变换 dst=src×α+β。

在进行类型转换时,要注意目标数据类型的范围。例如,将32位浮点数转换为8位无符号整数时,可能会丢失精度或发生溢出。

cpp 复制代码
//图像颜色模型转换
void cvtColor( 
InputArray src, 
OutputArray dst, 
int code, //COLOR_BGR2HSV COLOR_BGR2RGB COLOR_RGB2BGR COLOR_BGR2LAB等
int dstCn = 0 );

在 OpenCV 中,图像的颜色通道顺序默认是 BGR(蓝、绿、红),而不是常见的 RGB(红、绿、蓝)顺序。这是 OpenCV 的设计选择,主要是为了与早期的图像处理库和硬件设备兼容。

相关推荐
妖灵翎幺几秒前
C++ 中的 :: 操作符详解(一切情况)
开发语言·c++·ide
star _chen23 分钟前
C++实现完美洗牌算法
开发语言·c++·算法
繁星星繁1 小时前
【C++】脚手架学习笔记 gflags与 gtest
c++·笔记·学习
路痴楷2 小时前
无法定位程序输入点问题
c++·qt·visual studio
Source.Liu2 小时前
【LibreCAD】 RS_Units 类完整解析
c++·qt·rust
0319zz2 小时前
SFMFold
opencv
我是一棵无人问荆的小草3 小时前
编码演变史
开发语言·c++
劈星斩月3 小时前
OpenCV 学习2 -调整图像大小
opencv·调整图像大小
potato_may4 小时前
CC++ 内存管理 —— 程序的“五脏六腑”在哪里?
c语言·开发语言·数据结构·c++·内存·内存管理
饕餮怪程序猿4 小时前
A*算法(C++实现)
开发语言·c++·算法