set_lutT_set_lutSetLutSetLut (Operator)

Name

set_lutT_set_lutSetLutSetLut — Setzen einer Farbtabelle.

Signatur

set_lut( : : WindowHandle, LookUpTable : )

Herror T_set_lut(const Htuple WindowHandle, const Htuple LookUpTable)

void SetLut(const HTuple& WindowHandle, const HTuple& LookUpTable)

void HWindow::SetLut(const HTuple& LookUpTable) const

void HWindow::SetLut(const HString& LookUpTable) const

void HWindow::SetLut(const char* LookUpTable) const

void HWindow::SetLut(const wchar_t* LookUpTable) const   (Nur Windows)

static void HOperatorSet.SetLut(HTuple windowHandle, HTuple lookUpTable)

void HWindow.SetLut(HTuple lookUpTable)

void HWindow.SetLut(string lookUpTable)

Beschreibung

set_lutset_lutSetLutSetLutSetLut setzt die Farbtabelle des Gerätes (Bildschirm), auf dem das Ausgabefenster dargestellt wird. Eine Farbtabelle ist die Umsetzung der „Grauwerte“ der Bildmatrix in einen Grauton oder eine Farbe auf dem Bildschirm. Für jeden Wert (0..255) wird festgelegt, in welcher Kombination aus rot grün und blau er dargestellt werden soll. Hierbei werden jedem Grauwert drei Intensitäten für die Grundfarben zugeordnet; deshalb spricht man von einer Farbtabelle. Die Umsetzung erfolgt in Echtzeit und bei jedem Bildschirmaufbau (typisch 60 bis 70 mal pro Sekunde) neu. Dies ermöglicht es, die Farbtabelle zu wechseln, um ein anderes Erscheinungsbild zu erhalten. Es ist zu beachten, dass die Farbtabelle nicht bei jedem Rechner gewechselt werden kann (z.B.: Schwarz/Weiß bzw. Echtfarbe).

Die Farbtabellen in HALCON sind (bei einem Rechner mit 256 Farben) in drei Bereiche aufgeteilt:

S:

Systembereich, bzw. Benutzerbereich

G:

Grafikfarben

B:

Bilddaten

Die Farben in S stammen von den Anwendungen, die vor dem Start von HALCON aktiv waren, und weiterhin erhalten bleiben sollen. Die Grafikfarben G werden für Operatoren wie disp_regiondisp_regionDispRegionDispRegionDispRegion, disp_circledisp_circleDispCircleDispCircleDispCircle, etc. verwendet und sind in allen Farbtabellen gleich besetzt, d.h. die Ausgaben, die in einer Grafikfarbe erfolgen bleiben bei allen Farbtabellen erhalten. Grafikfarben werden mit set_colorset_colorSetColorSetColorSetColor und set_rgbset_rgbSetRgbSetRgbSetRgb gesetzt. Die Grautöne bzw. Farben der Bilddaten B werden von dem Operator disp_imagedisp_imageDispImageDispImageDispImage verwendet. Diese können sich in Abhängigkeit von der aktuellen Farbtabelle ändern. Eine Ausnahme vom oben Beschriebenen machen die Operatoren set_grayset_graySetGraySetGraySetGray (setzen einer Farbe aus dem Bereich B für Operatoren wie disp_regiondisp_regionDispRegionDispRegionDispRegion) und set_fixset_fixSetFixSetFixSetFix, die eine Modifikation der Grafikfarben ermöglicht.

Bei den heute üblichen Bildschirmen kann nur eine Farbtabelle pro Bildschirm geladen werden. set_lutset_lutSetLutSetLutSetLut kann jedoch für jedes Fenster getrennt aufgerufen werden. Für dieses Problem gibt es folgende Lösung: Es wird immer diejenige Tabelle aktiviert, die dem gerade aktiven Fenster zugeordnet ist (dabei hat hier aktiv nichts mit set_lutset_lutSetLutSetLutSetLut, sondern vielmehr mit dem „Window-Manager“ zu tun).

Farb- und Grautabellen koennen können auch zusammen mit Echtfarben Graphikkarten verwendet werden. In diesem Fall wird die Tabelle durch Software simuliert, das heißt, dass das ein Bild bei der Ausgabe über die Tabelle bearbeitet wird.

WindowsNT spezifisch: Wird die Grafikkarte nicht im Echtfarbenmodus verwendet, so muss nach dem Einstellen der Farbtabelle das Bild neue ausgegeben werden.

Die Namen aller Farbtabellen können mit query_lutquery_lutQueryLutQueryLutQueryLut abgefragt werden. Die Farbtabellen unterscheiden sich in dem für die Grauwerte vorgesehenen Bereich. In diesem Bereich zeigen sie folgendes Verhalten:

Grauwerttabellen (1-7 Bildebenen)

'default':

Es werden die beiden Grundfarben (i.allg. schwarz und weiß) verwendet.

Farbtabelle (Echtfarbe, Statische Graustufen)

'default':

Von der Hardware vorgegebene Tabelle.

Grauwerttabellen (256 Farben)

'default':

Wie 'linear'.

'linear':

Lineares Ansteigen der Grauwerte von 0(schwarz) nach 255 (weiß).

'inverse':

Inverse Funktion zu 'linear'.

'sqr':

Ansteigen der Grauwerte als quadratische Funktion.

'inv_sqr':

Inverse Funktion zu 'sqr'.

'cube':

Ansteigen der Grauwerte als 3. Potenz-Funktion.

'inv_cube':

Inverse Funktion zu 'cube'.

'sqrt':

Ansteigen der Grauwerte als Quadratwurzelfunktion.

'inv_sqrt':

Inverse Funktion zu 'sqrt'.

'cubic_root':

Ansteigen der Grauwerte als 3. Wurzel-Funktion.

'inv_cubic_root':

Inverse Funktion zu 'cubic_root'.

Farbtabellen (256 Farben)

'color1':

Linearer Übergang von rot über grün nach blau.

'color2':

Fließender Übergang von gelb über rot, blau nach grün.

'color3':

Fließender Übergang von gelb über rot, blau, grün, rot nach blau.

'color4':

Fließender Übergang von gelb über rot nach blau.

'three':

Darstellung der drei Farben rot, grün, blau.

'six':

Darstellung der sechs Grundfarben gelb, rot, magenta, blau, cyan, grün.

'twelve':

Darstellung von 12 Farben.

'twenty_four':

Darstellung von 24 Farben.

'rainbow':

Darstellung der Spektralfarben von rot über grün nach blau.

'temperature':

Wärmetabelle von schwarz über rot und gelb nach weiß.

'change1':

Farbänderung nach jedem Pixel der Tabelle, und zwar abwechselnd die sechs Grundfarben.

'change2':

5-fache Farbänderung von grün über rot nach blau.

'change3':

3-fache Farbänderung von grün über rot nach blau.

Weiterhin kann eine Farbtabelle aus einer Datei eingelesen werden. Diese Datei muss in jeder Zeile drei Zahlen von 0 bis 255 enthalten, wobei die erste Zahl dem Rotanteil, die zweite dem Grünanteil und die dritte dem Blauanteil für die Darstellung einer Farbe entspricht. Die Anzahl der Zeilen ist beliebig. Dabei wird die erste Zeile als erster Grauwert, die letzte als letzter Grauwert verwendet. Ist die Anzahl der Zeilen geringer als die Zahl der Grauwerte in der Farbtabelle, so werden die vorhandenen Werte gleichmäßig über das ganze Intervall verteilt. Ist die Anzahl zu hoch, werden (gleichmäßig verteilt) Zeilen bei der Besetzung der Farbtabelle ignoriert. Diese Datei muss unter dem Namen „LookUpTableLookUpTableLookUpTableLookUpTablelookUpTable.lut“ abgespeichert sein. Der Dateiname wird ohne Extension angegeben. Die Datei wird im aktuellen Directory und dann in einem ausgezeichneten Directory ( siehe set_system(::'lut_dir',<Pfad>:)set_system("lut_dir",<Pfad>)SetSystem("lut_dir",<Pfad>)SetSystem("lut_dir",<Pfad>)SetSystem("lut_dir",<Pfad>) ) gesucht. Der Aufruf von set_lutset_lutSetLutSetLutSetLut kann auch mit einem Tupel von RGB-Werten erfolgen. Diese werden dann direkt gesetzt. Es ist zu beachten, dass die Anzahl der Parameterwerte, der Anzahl der aktuell verwendeten Pixel in der Farbtabelle entsprechen müssen.

Achtung

set_lutset_lutSetLutSetLutSetLut kann nur bei Bildschirmen mit 256 Graustufen/Farben verwendet werden.

Ausführungsinformationen

Parameter

WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle (input_control)  window HWindow, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Fensteridentifikator.

LookUpTableLookUpTableLookUpTableLookUpTablelookUpTable (input_control)  filename.read(-array) HTupleHTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)

Name der Farbtabelle, Werte der Farbtabelle (RGB) oder der Name der Datei.

Defaultwert: 'default' "default" "default" "default" "default"

Wertevorschläge: 'default'"default""default""default""default", 'linear'"linear""linear""linear""linear", 'inverse'"inverse""inverse""inverse""inverse", 'sqr'"sqr""sqr""sqr""sqr", 'inv_sqr'"inv_sqr""inv_sqr""inv_sqr""inv_sqr", 'cube'"cube""cube""cube""cube", 'inv_cube'"inv_cube""inv_cube""inv_cube""inv_cube", 'sqrt'"sqrt""sqrt""sqrt""sqrt", 'inv_sqrt'"inv_sqrt""inv_sqrt""inv_sqrt""inv_sqrt", 'cubic_root'"cubic_root""cubic_root""cubic_root""cubic_root", 'inv_cubic_root'"inv_cubic_root""inv_cubic_root""inv_cubic_root""inv_cubic_root", 'color1'"color1""color1""color1""color1", 'color2'"color2""color2""color2""color2", 'color3'"color3""color3""color3""color3", 'color4'"color4""color4""color4""color4", 'three'"three""three""three""three", 'six'"six""six""six""six", 'twelve'"twelve""twelve""twelve""twelve", 'twenty_four'"twenty_four""twenty_four""twenty_four""twenty_four", 'rainbow'"rainbow""rainbow""rainbow""rainbow", 'temperature'"temperature""temperature""temperature""temperature", 'cyclic_gray'"cyclic_gray""cyclic_gray""cyclic_gray""cyclic_gray", 'cyclic_temperature'"cyclic_temperature""cyclic_temperature""cyclic_temperature""cyclic_temperature", 'hsi'"hsi""hsi""hsi""hsi", 'change1'"change1""change1""change1""change1", 'change2'"change2""change2""change2""change2", 'change3'"change3""change3""change3""change3"

Dateiendung: .lut

Beispiel (HDevelop)

read_image(Image,'monkey')
query_lut(WindowHandle,LUTs)
for i := 0 to |LUTs|-1 by 1
  set_lut(WindowHandle,LUTs[i])
  fwrite_string(FileHandle, ['current table ',LUTs[i]])
  fnew_line(FileHandle)
  get_mbutton(WindowHandle,_,_,_)
endfor

Beispiel (C)

Htuple WindowHandleTuple, LUTs;
read_image(&Image,"monkey");
create_tuple(&WindowHandleTuple,1);
set_i(WindowHandleTuple,WindowHandle,0);
T_query_lut(WindowHandleTuple,&LUTs) \:
for(i=0; i<length_tuple(LUTs)-1; i++)
{
  set_lut(WindowHandle,get_s(LUTs,i));
  fwrite_string(FileHandle,"current table: ");
  fwrite_string(FileHandle,get_s(LUTs,i));
  fnew_line(FileHandle);
  get_mbutton(WindowHandle,NULL,NULL,NULL);
};

Beispiel (HDevelop)

read_image(Image,'monkey')
query_lut(WindowHandle,LUTs)
for i := 0 to |LUTs|-1 by 1
  set_lut(WindowHandle,LUTs[i])
  fwrite_string(FileHandle, ['current table ',LUTs[i]])
  fnew_line(FileHandle)
  get_mbutton(WindowHandle,_,_,_)
endfor

Beispiel (HDevelop)

read_image(Image,'monkey')
query_lut(WindowHandle,LUTs)
for i := 0 to |LUTs|-1 by 1
  set_lut(WindowHandle,LUTs[i])
  fwrite_string(FileHandle, ['current table ',LUTs[i]])
  fnew_line(FileHandle)
  get_mbutton(WindowHandle,_,_,_)
endfor

Beispiel (HDevelop)

read_image(Image,'monkey')
query_lut(WindowHandle,LUTs)
for i := 0 to |LUTs|-1 by 1
  set_lut(WindowHandle,LUTs[i])
  fwrite_string(FileHandle, ['current table ',LUTs[i]])
  fnew_line(FileHandle)
  get_mbutton(WindowHandle,_,_,_)
endfor

Ergebnis

set_lutset_lutSetLutSetLutSetLut liefert den Wert 2 (H_MSG_TRUE), falls der Parameter korrekt ist, die Hardware über eine Farbtabelle verfügt und das Fenster gültig ist. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

query_lutquery_lutQueryLutQueryLutQueryLut, get_lutget_lutGetLutGetLutGetLut

Siehe auch

get_lutget_lutGetLutGetLutGetLut, query_lutquery_lutQueryLutQueryLutQueryLut, set_colorset_colorSetColorSetColorSetColor, set_rgbset_rgbSetRgbSetRgbSetRgb, set_hsiset_hsiSetHsiSetHsiSetHsi, write_lutwrite_lutWriteLutWriteLutWriteLut

Modul

Foundation