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 的设计选择,主要是为了与早期的图像处理库和硬件设备兼容。

相关推荐
磊 子25 分钟前
STL无序关联容器—unorded_set+unorded_map
开发语言·c++
初夏睡觉34 分钟前
数据结构学习之~二叉堆 (P3378 【模版】堆)
数据结构·c++·学习
云泽8081 小时前
笔试算法 - 链表篇(一):移除、反转、合并、回文判断全解析
数据结构·c++·算法·链表
小poop1 小时前
深入理解指针(中):数组与指针的进阶之旅
c++
朔北之忘 Clancy2 小时前
2026 年 3 月青少年软编等考 C/C++ 一级真题解析
c语言·开发语言·c++·青少年编程·题解·考级
小成202303202652 小时前
C++~01面向对象基础
开发语言·c++
郝学胜-神的一滴3 小时前
干货版《算法导论》07:递归视角下的选择排序与归并排序
java·数据结构·c++·python·程序人生·算法·排序算法
暖焰核心4 小时前
C++内存管理和模板初阶
开发语言·c++
Irissgwe4 小时前
c++智能指针
开发语言·c++
西梅汁4 小时前
C++ 线程间通信(一)
c++