文章目录
引言
在计算机视觉和图像处理领域,色彩空间转换是一项基础而重要的任务。通过合理选择色彩空间,我们可以更高效地实现目标检测、图像分割和特征提取等功能。本文将深入讲解OpenCV中HSV色彩空间的原理,并详细解析cvtColor和imwrite两个核心API的使用方法。
一、色彩空间概述
RGBHSV_8">1.1 RGB与HSV的区别
- RGB:通过红(Red)、绿(Green)、蓝(Blue)三个通道的组合表示颜色,适合显示系统,但对光照敏感。
- HSV:由色相(Hue)、饱和度(Saturation)、明度(Value)三个维度构成,更贴近人类对颜色的感知,常用于颜色识别和分割。
HSV_12">1.2 HSV的详细含义
- Hue(色相):表示颜色类型,范围是 0 ~ 180(OpenCV中8位图像将0~360缩放到此范围)。
- Saturation(饱和度):颜色的纯度,0(灰色)~ 255(完全饱和)。
- Value(明度):颜色亮度,0(黑色)~ 255(最亮)。
注意:HSV在OpenCV中的范围与理论值不同,需特别注意。
cvtColor
二、cvtColor函数详解
2.1 函数原型
void cv::cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0
);
2.2 参数说明
- src:输入图像(如BGR格式的Mat对象)。
- dst:输出图像,保存转换后的结果。
- code:颜色空间转换代码,常用值:
- dstCn:输出图像的通道数,默认0表示自动推导。
2.3 使用示例
#include <opencv2/o