有关opencv的学习(6)—图像的HSV色彩空间

HSV色彩空间,即为用图像的色调(Hue),饱和度(Saturation),明度(Value)来描述颜色,即为颜色的直观特性。也称六角锥体模型,如下图所示:


色调——表示主色:绿色,黄色,红色。

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度——表示颜色的鲜艳程度

饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度——表示某种颜色的光亮程度

对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

代码如下:

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

using namespace cv;
using namespace std;

int main( )
{
    Mat image=imread("/Users/zhangxiaoyu/Desktop/2.png");
    if(image.empty())
  {
     cout<<"Error!cannot be read...../n";
     return -1;
    }
    
    //转换为HSV色彩空间
    Mat hsv;
    cvtColor(image, hsv, CV_BGR2HSV);
    
    //把三个通道分割进三个图像中
    vector<Mat>channels;
    split(hsv, channels);
    //channels[0]是色调
    //channels[1]是饱和度
    //channels[2]是亮度
    
    namedWindow("hue");
    imshow("hue", channels[0]);
    
    namedWindow("saturation");
    imshow("saturation", channels[1]);

    namedWindow("value");
    imshow("value", channels[2]);

    waitKey(0);
    
}
愿图像如下所示:


图像的色调通道显示如下:


图像的饱和度通道显示如下:


图像的明度通道显示如下:



发布了26 篇原创文章 · 获赞 1 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章