求RGB图像向HSI图像转换的源码,急!要求用VC++实现,并能看到转换的结果(把一幅RGB格式图像转换保存为HSI格式的图像)。

解决方案 »

  1.   

    void Rgb2Hsv(float R, float G, float B, float&amt; H, float&amt; S, float&amt;V)
    {
    // r,g,b values are from 0 to 1
    // h = [0,360], s = [0,1], v = [0,1]
    // if s == 0, then h = -1 (undefined) float min, max, delta,tmp;
    tmp = min(R, G);
    min = min( tmp, B );
    tmp = max( R, G);
    max = max(tmp, B ); V = max; // v delta = max - min; if( max != 0 )
    S = delta / max; // s
    else
    {
    // r = g = b = 0 // s = 0, v is undefined
    S = 0;
    H = UNDEFINEDCOLOR;
    return;
    }
    if( R == max )
    H = ( G - B ) / delta; // between yellow &amt; magenta
    else if( G == max )
    H = 2 + ( B - R ) / delta; // between cyan &amt; yellow
    else
    H = 4 + ( R - G ) / delta; // between magenta &amt; cyan H *= 60; // degrees
    if( H < 0 )
    H += 360;