OPENCV入门教程七:颜色空间转换

一、目标

学习把RGB(红绿蓝)空间的图像转化为其它空间的图像。
将RGB转化为HSV(色调(H),饱和度(S),明度(V))
将RGB转化为Lab(颜色模型 (Lab) 基于人对颜色的感觉,L表示明度(Luminosity),a表示从洋红色至绿色的范围,b表示从黄色至蓝色的范围)
将RGB转化为YCrCb(其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色)

二、函数说明

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

src和dst分别是待转的图像(src)和待转图像转换后的图像(dst);code是一个掩码,表示由src到dst之间是怎么转的,比如是彩色转为灰度,还是彩色转为HSI模式;最后的dstCn表示dst图像的波段数,这个值默认是0,它可以从参数code中推断。
code的模式包括:
CV_BGR2YCrCb:<彩色图像转YCrCb图像>,
CV_BGR2HSV
CV_BGR2Lab

三、程序代码

#include "cv.h"                             //  OpenCV 文件头
#include "highgui.h"
#include "cvaux.h"
#include "cxcore.h"
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <string>

using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{
    Mat dst_img;
    string imageName("C:\\Users\\lidabao\\Desktop\\Lena.bmp"); // 图片在电脑中的绝对地址

    Mat bgr_img = imread(imageName.c_str(), IMREAD_COLOR);//读入图片数据
    if (bgr_img.empty())
        return -1;

    namedWindow("image", 0);
    imshow("image", bgr_img);

    // BGR -> HSV
    cvtColor(bgr_img, dst_img, CV_BGR2HSV);
    namedWindow("HSV image", 0);
    imshow("HSV image", dst_img);

    // BGR -> Lab
    cvtColor(bgr_img, dst_img, CV_BGR2Lab);
    namedWindow("Lab image", 0);
    imshow("Lab image", dst_img);

    // BGR -> YCrCb
    cvtColor(bgr_img, dst_img, CV_BGR2YCrCb);
    namedWindow("YCrCb image", 0);
    imshow("YCrCb image", dst_img);
    waitKey(0);
}

四、解释

1、BGR -> HSV

cvtColor(bgr_img, dst_img, CV_BGR2HSV);

cvtColor第一个参数为原图片
第二个参数为目的图片
第三个参数为转化的掩码,表示转化的方向从BGR转到HSV

2、BGR -> Lab

cvtColor(bgr_img, dst_img, CV_BGR2Lab);

cvtColor第一个参数为原图片
第二个参数为目的图片
第三个参数为转化的掩码,表示转化的方向从BGR转到Lab

3、BGR -> Lab

cvtColor(bgr_img, dst_img, CV_BGR2YCrCb);

cvtColor第一个参数为原图片
第二个参数为目的图片
第三个参数为转化的掩码,表示转化的方向从BGR转到YCrCb

五、结果

转换结果如下图:
这里写图片描述

六、注意

正确的配置opencv
正确使用cvtColor()函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值