Mega Code Archive

 
Categories / Delphi / Graphic
 

Convert rgb to 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;