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






你可能感兴趣的:(opencv)