opencv——實現BGR到HSV顏色空間轉換

#include <opencv2/opencv.hpp>
#include <stdio.h>

int main (int argc ,char* argv[])
{
	<span style="color:#009900;">//讀入圖像</span>
IplImage* src = cvLoadImage("C:\\Users\\wxh\\Documents\\Visual Studio 2010\\Projects\\9.28\\9.28\\1.jpg",1);
<span style="color:#009900;">//創建圖像hsv、h、s、v,大小和src一樣,其中,hsv爲3通道圖像,h、s、v爲單通道圖像</span>
IplImage* hsv = cvCreateImage(cvGetSize(src),8,3);
IplImage* h = cvCreateImage(cvGetSize(src),8,1);
IplImage* s = cvCreateImage(cvGetSize(src),8,1);
IplImage* v = cvCreateImage(cvGetSize(src),8,1);

<span style="color:#009900;">//cvCvtColor函數實現BGR到HSV顏色空間的轉換</span>
cvCvtColor(src,hsv,CV_BGR2HSV);
<span style="color:#009900;">//把hsv分解成三個單通道圖像</span>
cvSplit( hsv,h,s,v,NULL);
<span style="color:#009900;">//顯示圖像</span>
cvNamedWindow("src",1);
cvNamedWindow("hsv",1);
cvNamedWindow("h",1);
cvNamedWindow("s",1);
cvNamedWindow("v",1);
cvShowImage("src",src);
cvShowImage("hsv",hsv);
cvShowImage("h",h);
cvShowImage("s",s);
cvShowImage("v",v);
<span style="color:#009900;">//等待按鍵觸發</span>
cvWaitKey(0);
<span style="color:#009900;">//釋放圖像空間和消除窗口</span>
cvReleaseImage(&src);
cvReleaseImage(&hsv);
cvReleaseImage(&h);
cvReleaseImage(&s);
cvReleaseImage(&v);
cvDestroyWindow("src");
cvDestroyWindow("hsv");
cvDestroyWindow("h");
cvDestroyWindow("s");
cvDestroyWindow("v");

return 0;

}

顯示結果:


註釋:

一、HSV顏色空間

  H代表Hue。即色度:這裏的H以一個360°的轉盤呈現,0°代表紅色,直徑上的端點互爲補色,即合成爲白色。

  S代表Saturation。即飽和度:通俗的來講就是顏色純不純,數值越大表示顏色越純。

  V代表Value。即純度:可以理解爲亮度Brightness,數值越大顏色顯得越亮。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章