1. 程式人生 > >opencv學習筆記之五 顏色空間

opencv學習筆記之五 顏色空間

一、顏色空間

1.BGR

互補光: A(BGR) + B(BGR) = 白色(255,255,255),則AB互補。

亮度定義: 綠光人的感應最強。 Y = 0.299*R + 0.587*G + 0.114*B 

灰度影象表示的就是亮度的差別。

顏色空間的對角線上的顏色是灰度的。

非彩色影象 != 灰度影象

// opencv12.cpp : 定義控制檯應用程式的入口點。
//程式碼和視訊一樣   12   但是在vs2012 + opencv2.4.9下不通過
//效果是現實三通道的 無 彩色影象
#include "stdafx.h"
#include "highgui.h"
#include "cv.h"
#include "cxcore.h"

int _tmain(int argc, _TCHAR* argv[])
{
	IplImage* img = cvLoadImage("D:\\PERSONAL\\VC++\\OpenCV\\image\\hyhead4.jpg",0);//1 表示輸入三通道的; 0 表示輸入單通道的
	IplImage* dst = cvCreateImage(cvGetSize(img),8,3);
	cvMerge(img,img,img,0,dst);

	cvNamedWindow("hy4");
	cvShowImage("hy4",img);
	cvNamedWindow("hy4_3");
	cvShowImage("hy4_3",dst);
	cvWaitKey(0);
	cvReleaseImage(&img);
	cvDestroyWindow("hy4");
	cvReleaseImage(&dst);
	cvDestroyWindow("hy4_3");
	return 0;
}

//視訊中 顏色空間灰度執行緒序
int _tmain(int argc, _TCHAR* argv[])
{
	IplImage* img = cvLoadImage("D:\\PERSONAL\\VC++\\OpenCV\\image\\hyhead4.jpg");
	IplImage* dst = cvCreateImage(cvSize(255,255),8,3);
	//cvMerge(img,img,img,0,dst);
	for(int y = dst->height-1;y>0;y--)
	{
		cvSet2D(dst,y,dst->height - y,cvScalar(255-y,255-y,0));
	}

……
	return 0;
}

2.HSV

H:顏色; 取值是0-360,表示圓心角;0度紅,60黃,120綠,180青,240藍,圓直徑上的兩個顏色是互補光。

S: 飽和度;取值 0(表現為白色)——100(表示摻入白色值為0,純色);彩色度與亮度的比值。

V: 亮度; 0(暗)——100(亮)

閱讀資料:

http://baike.baidu.com/link?url=ZxPfay_4Hu63trfSU7aoQw3wMILtN1302YHWJ8RQ054zhxGJqlZYnboQ44bYTISwyR9ZvCjOv0c7ZGLWMHd3MkoeZ_kn9l2S31HpP8KxQ1O

http://blog.csdn.net/r91987/article/details/6262570