用色调、饱和度和亮度表示颜色

RGB 是一种被广泛接受的色彩空间。虽然它被视为一种在电子成像系统中采集和显示颜色的有效方法,但它其实并不直观,也并不符合人类对于颜色的感知方式——我们更习惯用色彩、亮度或彩度(即表示该颜色是鲜艳的还是柔和的)来描述颜色。为了能让用户用更直观的属性描述颜色,我们引入了基于色调、饱和度和亮度的色彩空间。
用 cv::cvtColor 函数把 BGR 图像转换成另一种色彩空间。这里使用转换代码 CV_BGR2HSV:

// 转换成 HSV 色彩空间
cv::Mat hsv; 
cv::cvtColor(image, hsv, CV_BGR2HSV); 

我们可以用代码 CV_HSV2BGR 把图像转换回 BGR 色彩空间。通过把图像的通道分割到三个独立的图像中,我们可以直观地看到每一种 HSV 组件,方法如下所示:

// 把 3 个通道分割进 3 幅图像中
std::vector<cv::Mat> channels; 
cv::split(hsv,channels); 
// channels[0]是色调
// channels[1]是饱和度
// channels[2]是亮度

注意第三个通道表示颜色值,即颜色亮度的近似值。因为处理的是 8 位图像,所以 OpenCV会把通道值的范围重新调节为 0~255(色调除外,它的范围被调节为 0~180,下节会解释原因)。这个方法非常实用,因为我们可以把这几个通道作为灰度图像进行显示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值