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

相关推荐
会周易的程序员14 分钟前
openplc runtimev4 Docker 部署
运维·c++·物联网·docker·容器·软件工程·iot
xrgs_shz15 分钟前
什么是LLM、VLM、MLLM、LMM?它们之间有什么关联?
人工智能·计算机视觉
CoovallyAIHub22 分钟前
让本地知识引导AI追踪社区变迁,让AI真正理解社会现象
深度学习·算法·计算机视觉
爱装代码的小瓶子26 分钟前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端
CoderCodingNo26 分钟前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法
LYOBOYI12332 分钟前
qtcpSocket详解
c++·qt
晚霞的不甘35 分钟前
Flutter for OpenHarmony实现 RSA 加密:从数学原理到可视化演示
人工智能·flutter·计算机视觉·开源·视觉检测
REDcker35 分钟前
gRPC完整文档
服务器·网络·c++·网络协议·grpc
图学习小组38 分钟前
Degradation-Aware Feature Perturbation for All-in-One Image Restoration
人工智能·深度学习·计算机视觉
CoovallyAIHub41 分钟前
AAAI 2026这篇杰出论文说了什么?用LLM给CLIP换了个“聪明大脑”
深度学习·算法·计算机视觉