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

相关推荐
HellowAmy17 小时前
我的C++规范 - 玩一个小游戏
开发语言·c++·代码规范
自学不成才17 小时前
深度复盘:一次flutter应用基于内存取证的黑盒加密破解实录并完善算法推理助手
c++·python·算法·数据挖掘
gorgeous(๑>؂<๑)19 小时前
【西北工业大学-邢颖慧组-AAAI26】YOLO-IOD:实时增量目标检测
人工智能·yolo·目标检测·计算机视觉·目标跟踪
玖釉-19 小时前
[Vulkan 学习之路] 08 - 给图片穿马甲:图像视图 (Image Views)
c++·windows·图形渲染
m0_7482500320 小时前
C++ 信号处理
c++·算法·信号处理
yuyanjingtao20 小时前
动态规划 背包 之 凑钱
c++·算法·青少年编程·动态规划·gesp·csp-j/s
努力犯错21 小时前
Qwen Image Layered:革命性的AI图像生成与图层分解技术
人工智能·深度学习·计算机视觉
scx2013100421 小时前
20260112树状数组总结
数据结构·c++·算法·树状数组
星竹晨L21 小时前
【C++内存安全管理】智能指针的使用和原理
开发语言·c++
智者知已应修善业21 小时前
【C语言 dfs算法 十四届蓝桥杯 D飞机降落问题】2024-4-12
c语言·c++·经验分享·笔记·算法·蓝桥杯·深度优先