初学opencv c++学习笔记(二)图像空间色彩转换cvtColor()

对图像的色彩转换用到cvtColor()函数,本章将对此其用法进行解析。


提示:以下是本篇文章正文内容,下面案例可供参考

一、色彩空间转换

APL:cvtColor()


官方定义

void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );

 函数参数解释

1.src(source):输入的源图像。为矩阵形式。

2.dst(destination):输出的目标图像,即经过色彩转后我们需要得到的图像。也为矩阵形式。

3.code:颜色空间转换的标识符,表示我们所要进行空间转换的结果。

  code的参数多达200多,在此列举一些常用的参数,更多参数请查阅opencv官方文档

空间转换标识符code
BGR——灰度COLOR_BGR2GRAY6
RGB——灰度

COLOR_RGB2GRAY

7
灰度——RGB/BGR

 COLOR_GRAY2RGB  

= COLOR_GRAY2BGR

8
BGR——HSVCOLOR_BGR2HSV40
RGB——HSV    COLOR_RGB2HSV      41
HSV——BGR   COLOR_HSV2BGR      54
HSV——RGB  COLOR_HSV2RGB     55

BGR——RGB

RGB——BGR

COLOR_BGR2RGB    

 =  COLOR_RGB2BGR 

4

    注意!此处有知识点!在opencv中彩色图像(RGB图像)按照BGR顺序进行存储。

               所以以彩色图像为源图像进行颜色空间转换时,注意是“BGR2   ”

4.dstCn:目标图像的通道数。

               默认值为0,表示目标图像取源图像的通道数

代码演示

RGB——HSV  RGB——GRAY

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;
int main(int argc, char** argv)
    {          
     Mat str = imread("C:/素材/11.jpg");//读取图片,定义Mat类型,不设置imread的第二个参数默认读入彩色图片
     Mat imghsv,imggray;//定义目标图像

     cvtColor(str,imghsv,COLOR_BGR2HSV);//将str转换为HSV图像保存在imghsv中
     cvtColor(str, imggray, COLOR_BGR2GRAY);//将str转换为GRAY图像,保存在imggray中

     if (str.empty())//判断是否找到图片
     {
         printf(“没有找到图片”);
         return -1;
     }
     else
     {
                            //WINDOW_FREERATIO显示的大小可以自由更改
                            //WINDOW_AUTOSIZE显示大小为图片自定义大小,不可更改
         namedWindow("原图”, WINDOW_FREERATIO);
         imshow("原图”,str);//显示源图片

         namedWindow("HSV图像”, WINDOW_FREERATIO);
         imshow("HSV图像”, imghsv);//显示HSV图像

         namedWindow("GRAY图像”, WINDOW_FREERATIO);
         imshow("GRAY图像”, imggray);//显示GRAY图像

         waitKey(0);//显示的毫秒时间,函数参数>0表示显示的时间,否则为一直显示
         
         destroyAllWindows();//销毁所有窗口
     }

    return 0;
    }

 BGR——RGB

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;
int main(int argc, char** argv)
    {           
     Mat str = imread("C:/素材/11.jpg"),imgRGB;

     cvtColor(str, imgRGB, COLOR_BGR2RGB);

     if (str.empty())//判断是否找到图片
     {
         printf("没有找到图片");
         return -1;
     }
     else
     {
         imshow("RGB图像", imgRGB);

         waitKey(0);
     }
     return 0;
    }

彩色图像三通道顺序变化(还挺好看)


总结

以上就是颜色空间转换的内容,大家快动手试试叭!欢迎在评论区交流~

  • 10
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值