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

相关推荐
bryant_meng1 小时前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
车载诊断技术1 小时前
电子电气架构 --- 什么是EPS?
网络·人工智能·安全·架构·汽车·需求分析
KevinRay_1 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
跃跃欲试-迪之1 小时前
animatediff 模型网盘分享
人工智能·stable diffusion
Captain823Jack2 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
被制作时长两年半的个人练习生2 小时前
【AscendC】ReduceSum中指定workLocal大小时如何计算
人工智能·算子开发·ascendc
Captain823Jack2 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
Black_mario3 小时前
链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景
网络·人工智能·web3
Aileen_0v03 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
数信云 DCloud3 小时前
实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域
人工智能