OpenCV学习笔记(06):OpenCV颜色空间转换的两种方式

1.背景知识

1)什么是色域?

在计算机图形当中,色域是对颜色进行编码的一种方案,最常见的编码方案是RGB模式。

我个人的理解是,色域是计算机描述色彩空间的一种量化方式,颜色对于人而言,是一种感性而主观的概念(比如说,蓝蓝的天空,白白的云),但在计算机中,对于颜色的描述必须数字化,以0和1的方式表达,那么如何规定这些表达,色域遍应运而生,比如在计算机内存中,蓝色为RGB(0,0,255),对应值#0000FF,白色为RGB(255,255,255),对应值#FFFFFF。计算机在内存中以0和1编码方式存储这些值,然后再根据不同的值调用屏幕显示设备不同的显示输出,得到对应的像素点颜色显示。
在这里插入图片描述

2)什么是颜色空间?

本质上,颜色空间是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。采用的大多数颜色模型都是面向硬件或面向应用的。颜色空间从提出到现在已经有上百种,大部分只是局部的改变或专用于某一领域。颜色空间有许多种,常用有RGB,CMY,HSV,HSI等。
在这里插入图片描述
以RGB为例,举个例子——

我们知道,一幅图像的基本组成单位是以RGB为基础展开的,为此可以理解为一个图像由RGB这样的三个元素组成,R为一个红色通道,表示为1;G为一个绿色通道,表示为2;B 为一个蓝色通道,表示为3;有一处白色图像则为4,它是由1、2、3处的通道颜色混合而成,这相当于我们使用的调色板,几种颜色混合在一起将产生一种新的颜色

2.使用cvtColor函数进行颜色空间的转换

OpenCV对于色彩空间的转换提供了很好的支持,cvtColor函数可以直接用于部分空间的色彩转换

cvtColor函数

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

第一个参数表示输入图像
第二个参数表示输出图像
第三个参数表示转换的编码,比如,RGB转灰度图对应COLOR_BGR2GRAY
第四个参数表示输出图像的通道数,默认为0,表示由参数code来决定

一个例子,RGB转灰度图

#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
    
	Mat src = imread("E:\\Test.jpg");
	Mat dst(src
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值