ImageEn, unit imageenproc

TImageEnProc.GuessChromaKeyColor

TImageEnProc.GuessChromaKeyColor


Declaration


function GuessChromaKeyColor : TRGB; overload;
function GuessChromaKeyColor(out Tolerance: Double) : TRGB; overload;


Description


Analyzes a ChromaKey image to guess its key color (by examining nine areas of the image and using the one with the least hue variance). If a selection is active it only analyzes the selection.

The second overload will return a level of Tolerance that would remove all the background color from the selection. If this is used without a selection it is likely to return a level that is too low (a default tolerance of 0.21 is usually better).

A ChromaKey image contains a solid color block that is removed so that it can be applied to a background. E.g. in the following image the key color is neon green (R=0/G=254/B=0).




Example


// Get the key color of the current layer
ImageEnView1.LayersCurrent := 1;
KeyColor := ImageEnView1.Proc.GuessChromaKeyColor;
clsKeyColor.Color := TRGB2TColor( KeyColor );

// Guess the key color and tolerance of the area selected by the user
procedure TMainForm.ImageEnView1SelectionChange(Sender: TObject);
var
  Tolerance: Double;
  KeyColor : TRGB;
begin
  if ImageEnView1.Selected then
  begin
    KeyColor := ImageEnView1.Proc.GuessChromaKeyColor( Tolerance );
    clsKeyColor.Color := TRGB2TColor( KeyColor );
    trkTolerance.Position := Trunc( Tolerance * 1000 );
    ApplyChromaKey();
  end;
end;


See Also


- RemoveChromaKey
- CreateRGB
- TRGB2TColor
- TColor2TRGB