| 
   
    | ...Convert RGB To HSV? |   
    | Autor: 
      S.Rasul Ataee |  | [ Print tip 
] |  |  |  
 
 
typeTHSV = 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;
 
 
 
 
   |