HSV 和 RGB 互换 函数 c++

    技术2024-06-19  72

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

    最新回复(0)