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

相关推荐
anew___4 小时前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
羞儿4 小时前
人体姿态估计系统知识框架
深度学习·计算机视觉·姿态估计·行为识别
stolentime5 小时前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
tdtsmt6 小时前
穿戴硬件量产工艺实录:天地通电子智能手表主板 SMT 贴片案
c++
大江东去浪淘尽千古风流人物8 小时前
【UniSim-SLAM】前馈SLAM的双流架构:Sim(3)统一位姿图、与经典SLAM及DPVO的三范式对比
深度学习·计算机视觉·3d·交互·人体姿态估计·eccv·3d重建
XiaoZhenHua988 小时前
VisionPro多相机高速检测性能优化实战:从图像堆积到稳定运行
人工智能·计算机视觉·自动化
matlab代码8 小时前
基于matlab多尺度形态学提取眼前节组织【源码73期】
图像处理·人工智能·计算机视觉
m0_734571769 小时前
深入理解C++ 析构函数<一>基本概念
开发语言·c++
t-think10 小时前
C++ string 类(上)—— string类初识与常用接口详解
开发语言·c++
cpp_learners11 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式