//函数把 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; } }}