有關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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章