openCV 图像色彩空间转换

文章目录

cpp 复制代码
void QuickDemo::colorSpce_Demo(cv::Mat &image)
{
  cv::Mat gray, hsv;

  cvtColor(image, hsv, COLOR_BGR2HSV);
  cvtColor(image, gray, COLOR_RGB2GRAY);

  imshow("hsv", hsv);
  imshow("gray", gray);

  imwrite("./hsv.png",hsv);
  imwrite("./gray.png", gray);
}

一、cvColor

cvtColor函数是OpenCV库中的一个函数,用于图像颜色空间的转换。它可以将一个图像从一个颜色空间转换为另一个颜色空间,比如将彩色图像转换为灰度图像、将BGR图像转换为HSV图像等

cpp 复制代码
cv::cvtColor(src, dst, code, dstCn);
  • src:输入图像,可以是一个三通道的彩色图像或者一个单通道的灰度图像。

  • dst:输出图像,转换后的图像将存储在这里。

  • code:颜色空间转换代码,指定要进行的转换类型。具体的转换类型可以通过 cv::ColorConversionCodes 枚举类中的常量来指定。常见的转换类型包括:

    cv::COLOR_BGR2GRAY:BGR彩色图像到灰度图像的转换。

    cv::COLOR_BGR2HSV:BGR彩色图像到HSV彩色图像的转换。

    cv::COLOR_BGR2RGB:BGR彩色图像到RGB彩色图像的转换。

    cv::COLOR_GRAY2BGR:灰度图像到BGR彩色图像的转换。

  • dstCn:输出图像的通道数,如果为0,则根据 code 参数自动确定通道数。

注意事项:

  • 输入图像和输出图像应该具有相同的尺寸
  • 如果输入图像是彩色图像,而输出图像是灰度图像,则输出图像只有一个通道
  • 如果输入图像是灰度图像,而输出图像是彩色图像,则输出图像的通道数由 dstCn 参数指定

二、HSV/BGR

HSV(Hue-Saturation-Value)和BGR(Blue-Green-Red)是两种常用的颜色表示方式,用于描述彩色图像中的像素颜色。

BGR颜色空间是计算机图形学中最常用的颜色空间之一。在BGR颜色空间中,每个像素由三个分量表示:蓝色(Blue)、绿色(Green)和红色(Red)。对于8位BGR图像,每个分量的取值范围是0到255,其中0表示最小强度或没有该颜色,255表示最大强度或完全饱和的颜色。

相比之下,HSV颜色空间将颜色表示为更直观和易于理解的方式。它包含以下三个主要分量:

  • 色调(Hue):表示颜色的类型或种类。在HSV圆柱体中,色调沿着圆周方向变化,从0到360度。常见的色调表示如下:

    红色位于0度或360度

    黄色位于60度

    绿色位于120度

    青色位于180度

    蓝色位于240度

    洋红色位于300度

  • 饱和度(Saturation):表示颜色的鲜艳程度或纯度。较高的饱和度表示颜色更鲜艳,而较低的饱和度表示颜色更接近灰色。饱和度的取值范围通常是0到1,也可以是0到100。

  • 值(Value):表示颜色的亮度或明暗程度。较高的值表示颜色更亮,而较低的值表示颜色更暗。值的取值范围通常是0到1,也可以是0到100。

HSV颜色空间的转换可以通过OpenCV中的cvtColor函数来实现,使用的转换代码是cv::COLOR_BGR2HSV。

三、imwrite

imwrite函数是OpenCV库中用于将图像写入文件的函数。它可以将一个图像保存为指定格式的图像文件。

cpp 复制代码
bool cv::imwrite(const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());

参数解释如下:

  • filename:要保存的图像文件的路径和名称。
  • img:要保存的图像,可以是 cv::Mat 类型的图像对象。
  • params:保存图像的参数,是一个可选的参数。它是一个包含键值对的整数向量,用于指定保存图像的特定参数。常用的参数包括:
    CV_IMWRITE_JPEG_QUALITY:JPEG格式图像的质量,取值范围为0到100,默认为95。
    CV_IMWRITE_PNG_COMPRESSION:PNG格式图像的压缩级别,取值范围为0到9,默认为3。
    CV_IMWRITE_WEBP_QUALITY:WebP格式图像的质量,取值范围为0到100,默认为80。

返回值为布尔类型,表示图像是否成功保存到文件中


推荐一个零声学院免费教程,个人觉得老师讲得不错,

分享给大家:

C++初级课程链接:
https://ke.qq.com/course/444655?flowToken=1043280

Qt课程链接:
https://ke.qq.com/course/444655?flowToken=1044614

相关推荐
极智视界8 分钟前
分类场景数据集大全「包含数据标注+训练脚本」 (持续原地更新)
人工智能·yolo·数据集·分类算法·数据标注·classification·分类数据集
翻滚的小@强24 分钟前
自动驾驶科普(百度Apollo)学习笔记
人工智能·自动驾驶·百度apollo
从零开始学习人工智能24 分钟前
从游戏到自动驾驶:互联网时代强化学习如何让机器学会自主决策?
人工智能·游戏·自动驾驶
幼稚园的山代王40 分钟前
Prompt Enginering(提示工程)先进技术
java·人工智能·ai·chatgpt·langchain·prompt
dfsj6601140 分钟前
LLMs 系列科普文(14)
人工智能·深度学习·算法
摘取一颗天上星️1 小时前
深入解析机器学习的心脏:损失函数及其背后的奥秘
人工智能·深度学习·机器学习·损失函数·梯度下降
远方16091 小时前
20-Oracle 23 ai free Database Sharding-特性验证
数据库·人工智能·oracle
znhy60581 小时前
智能终端与边缘计算按章复习
人工智能·边缘计算
__Benco1 小时前
OpenHarmony平台驱动使用(十五),SPI
人工智能·驱动开发·harmonyos
Listennnn1 小时前
AI系统的构建
人工智能·系统架构