opencv--HSV

色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°。一旦颜色从一种颜色进入另一种颜色,人眼将立即发现它。色调是人眼对光主波长的认知;

饱和度S:表示颜色纯净的程度,取值范围为0.0~1.0

亮度V:表示颜色的明暗程度,对于单色光,亮度表示了光线的强弱,对于物体,明度表示物体的反射或透射光线的能力,取值范围为0.0(黑色)~1.0(白色)。


简单程序来具体实现:

#include<iostream>
#include "cv.h"
#include "highgui.h"
#include <ctype.h>
using namespace std;

void main()
{
	IplImage *image,*hsv,*hue,*saturation,*value;//图像空间
	image=cvLoadImage("img2.jpg");
    hsv=cvCreateImage(cvGetSize(image),8,3);//给hsv色系的图像申请空间

	hue=cvCreateImage(cvGetSize(image),8,1);  //色调
	saturation=cvCreateImage(cvGetSize(image),8,1);//饱和度
	value=cvCreateImage(cvGetSize(image),8,1);//亮度

	cvNamedWindow("image",CV_WINDOW_AUTOSIZE);//用于显示图像的窗口
	cvNamedWindow("hsv",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("hue",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("saturation",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("value",CV_WINDOW_AUTOSIZE);
	
	cvCvtColor(image,hsv,CV_BGR2HSV);//将RGB色系转为HSV色系

	cvShowImage("image",image);
	cvShowImage("hsv",hsv);

	cvSplit(hsv, hue, 0, 0, 0 );//分离三个通道
	cvSplit(hsv, 0, saturation, 0, 0 );
	cvSplit(hsv, 0, 0, value, 0 );

	cvShowImage("hue",hue);
	cvShowImage("saturation",saturation);
	cvShowImage("value",value);
	cvWaitKey(0);
	//释放空间
	cvDestroyWindow("image");
	cvDestroyWindow("hsv");
	cvDestroyWindow("hue");
	cvDestroyWindow("saturation");
	cvDestroyWindow("value");
	return;
}


程序结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值