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);
}
願圖像如下所示:
圖像的色調通道顯示如下:
圖像的飽和度通道顯示如下:
圖像的明度通道顯示如下: