首页  编辑  

转换RGB为HSV

Tags: /超级猛料/Picture.图形图像编程/颜色处理/   Date Created:

转换RGB为HSV

type

 THSV = record  // hue saturation value (HSV)

          Hue , Sat , Val : Double;

        end;

{....}

function RGB2HSV (R,G,B : Byte) : THSV;

var

 Min_, Max_, Delta : Double;

 H , S , V : Double ;

begin

 H := 0.0 ;

 Min_ := Min (Min( R,G ), B);

 Max_ := Max (Max( R,G ), B);

 Delta := ( Max_ - Min_ );

 V := Max_ ;

 If ( Max_ <> 0.0 ) then

   S := 255.0 * Delta / Max_

 else

   S := 0.0 ;

 If (S <> 0.0) then

   begin

     If R = Max_ then

       H := (G - B) / Delta

     else

       If G = Max_ then

         H := 2.0 + (B - R) / Delta

       else

         If B = Max_ then

           H := 4.0 + (R - G) / Delta

   End

 else

   H := -1.0 ;

 H := H * 60 ;

 If H < 0.0 then H := H + 360.0;

 with Result Do

   begin

     Hue := H ;             // Hue -> 0..360

     Sat := S * 100 / 255; // Saturation -> 0..100 %

     Val := V * 100 / 255; // Value - > 0..100 %

   end;

end;