您的位置:首页 > 编程语言 > C语言/C++

HSV 和 RGB 互换 函数 c++

2011-01-30 15:40 239 查看
//函数把 rgb转成hsv

function setRGBToHSV(r1,r2,r3) {
var maxJ = Math.max(r1,r2,r3);
var minJ = Math.min(r1,r2,r3);
var _max = maxJ-minJ;
if(r1
== r2 && r2 == r3) {
H = 0;
S = 0;
} else {
switch(maxJ)
{
case r1:
H =
(r2-r3)/_max;
case r2:
H = 2 +
(r3-r1)/_max;
case r3:
H = 4 +
(r1-r2)/_max;
}
H *= 60;
if(H
< 0) H += 360;
H = Math.round(H);
S = Math.round(100*(maxJ -
minJ)/maxJ);
}
V = Math.round(100*maxJ/255);
}

//函数把val转到r、g、b里面

void HSV2RGB(float val[], uchar *r, uchar *g, uchar *b)
{
//hsv to rgb
int i;
float f, p, q, t;
val[0] /= (float)60;
i = (int)val[0];
f = val[0]-i;
p = val[2] * (1- val[1]);
q = val[2] * (1-val[1] * f);
t = val[2] * (1-val[1] * (1-f));
switch(i){
case 0:{
*r = val[2]*255;
*g = t*255;
*b = p*255;
break;
}
case 1:{
*r = q*255;
*g = val[2]*255;
*b = p*255;
break;
}
case 2:{
*r = p*255;
*g = val[2]*255;
*b = t*255;
break;
}
case 3:{
*r = p*255;
*g = q*255;
*b = val[2]*255;
break;
}
case 4:{
*r = t*255;
*g = p*255;
*b = val[2]*255;
break;
}
case 5:{
*r = val[2]*255;
*g = p*255;
*b = q*255;
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: