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

相关推荐
致Great2 分钟前
Invar-RAG:基于不变性对齐的LLM检索方法提升生成质量
人工智能·大模型·rag
华奥系科技7 分钟前
智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁
人工智能·科技·安全·生活
ZPC821038 分钟前
OpenCV—颜色识别
人工智能·opencv·计算机视觉
Mr.简锋44 分钟前
vs2022搭建opencv开发环境
人工智能·opencv·计算机视觉
m0_743106461 小时前
论文笔记:no pose,no problem-基于dust3r输出GS参数实现unpose稀疏重建
论文阅读·深度学习·计算机视觉·3d·几何学
weixin_443290691 小时前
【论文阅读】InstructPix2Pix: Learning to Follow Image Editing Instructions
论文阅读·人工智能·计算机视觉
ai产品老杨1 小时前
部署神经网络时计算图的优化方法
人工智能·深度学习·神经网络·安全·机器学习·开源
火山引擎边缘云2 小时前
创新实践:基于边缘智能+扣子的智能轮椅 AIoT 解决方案
人工智能·llm·边缘计算
fanxbl9572 小时前
深入探索离散 Hopfield 神经网络
人工智能·神经网络
ballball~~2 小时前
色彩滤波阵列(Color Filter Array, CFA)详解
计算机视觉·cfa