set_lutT_set_lutSetLutSetLutset_lut (Operator)

Name

set_lutT_set_lutSetLutSetLutset_lut — 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)

def set_lut(window_handle: HHandle, look_up_table: MaybeSequence[Union[int, str]]) -> None

Beschreibung

set_lutset_lutSetLutSetLutSetLutset_lut 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_regionDispRegionDispRegionDispRegiondisp_region, disp_circledisp_circleDispCircleDispCircleDispCircledisp_circle, 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_colorSetColorSetColorSetColorset_color und set_rgbset_rgbSetRgbSetRgbSetRgbset_rgb gesetzt. Die Grautöne bzw. Farben der Bilddaten B werden von dem Operator disp_imagedisp_imageDispImageDispImageDispImagedisp_image verwendet. Diese können sich in Abhängigkeit von der aktuellen Farbtabelle ändern. Eine Ausnahme vom oben Beschriebenen machen die Operatoren set_grayset_graySetGraySetGraySetGrayset_gray (setzen einer Farbe aus dem Bereich B für Operatoren wie disp_regiondisp_regionDispRegionDispRegionDispRegiondisp_region) und set_fixset_fixSetFixSetFixSetFixset_fix, die eine Modifikation der Grafikfarben ermöglicht.

Bei den heute üblichen Bildschirmen kann nur eine Farbtabelle pro Bildschirm geladen werden. set_lutset_lutSetLutSetLutSetLutset_lut 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_lutSetLutSetLutSetLutset_lut, sondern vielmehr mit dem „Window-Manager“ zu tun).

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

Die Namen aller Farbtabellen können mit query_lutquery_lutQueryLutQueryLutQueryLutquery_lut 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)

Wert Beschreibung
'default'"default""default""default""default""default" Es werden die beiden Grundfarben (i.allg. schwarz und weiß) verwendet.
Farbtabelle (Echtfarbe, statische Graustufen)

Wert Beschreibung
'default'"default""default""default""default""default" Von der Hardware vorgegebene Tabelle.
Grauwerttabellen (256 Farben)

Wert Beschreibung
'default'"default""default""default""default""default" Wie 'linear'"linear""linear""linear""linear""linear".
'linear'"linear""linear""linear""linear""linear" Lineares Ansteigen der Grauwerte von 0(schwarz) nach 255 (weiß).
'inverse'"inverse""inverse""inverse""inverse""inverse" Inverse Funktion zu 'linear'"linear""linear""linear""linear""linear".
'sqr'"sqr""sqr""sqr""sqr""sqr" Ansteigen der Grauwerte als quadratische Funktion.
'inv_sqr'"inv_sqr""inv_sqr""inv_sqr""inv_sqr""inv_sqr" Inverse Funktion zu 'sqr'"sqr""sqr""sqr""sqr""sqr".
'cube'"cube""cube""cube""cube""cube" Ansteigen der Grauwerte als 3. Potenz-Funktion.
'inv_cube'"inv_cube""inv_cube""inv_cube""inv_cube""inv_cube" Inverse Funktion zu 'cube'"cube""cube""cube""cube""cube".
'sqrt'"sqrt""sqrt""sqrt""sqrt""sqrt" Ansteigen der Grauwerte als Quadratwurzelfunktion.
'inv_sqrt'"inv_sqrt""inv_sqrt""inv_sqrt""inv_sqrt""inv_sqrt" Inverse Funktion zu 'sqrt'"sqrt""sqrt""sqrt""sqrt""sqrt".
'cubic_root'"cubic_root""cubic_root""cubic_root""cubic_root""cubic_root" Ansteigen der Grauwerte als 3. Wurzel-Funktion.
'inv_cubic_root'"inv_cubic_root""inv_cubic_root""inv_cubic_root""inv_cubic_root""inv_cubic_root" Inverse Funktion zu 'cubic_root'"cubic_root""cubic_root""cubic_root""cubic_root""cubic_root".
Farbtabellen (256 Farben)

Wert Beschreibung
'color1'"color1""color1""color1""color1""color1" Linearer Übergang von rot über grün nach blau.
'color2'"color2""color2""color2""color2""color2" Fließender Übergang von gelb über rot, blau nach grün.
'color3'"color3""color3""color3""color3""color3" Fließender Übergang von gelb über rot, blau, grün, rot nach blau.
'color4'"color4""color4""color4""color4""color4" Fließender Übergang von gelb über rot nach blau.
'three'"three""three""three""three""three" Darstellung der drei Farben rot, grün, blau.
'six'"six""six""six""six""six" Darstellung der sechs Grundfarben gelb, rot, magenta, blau, cyan, grün.
'twelve'"twelve""twelve""twelve""twelve""twelve" Darstellung von 12 Farben.
'twenty_four'"twenty_four""twenty_four""twenty_four""twenty_four""twenty_four" Darstellung von 24 Farben.
'rainbow'"rainbow""rainbow""rainbow""rainbow""rainbow" Darstellung der Spektralfarben von rot über grün nach blau.
'temperature'"temperature""temperature""temperature""temperature""temperature" Wärmetabelle von schwarz über rot und gelb nach weiß.
'change1'"change1""change1""change1""change1""change1" Farbänderung nach jedem Pixel der Tabelle, und zwar abwechselnd die sechs Grundfarben.
'change2'"change2""change2""change2""change2""change2" 5-fache Farbänderung von grün über rot nach blau.
'change3'"change3""change3""change3""change3""change3" 3-fache Farbänderung von grün über rot nach blau.
'jet'"jet""jet""jet""jet""jet" Fließender Übergang von blau über grün, gelb nach rot.
'inverse_jet'"inverse_jet""inverse_jet""inverse_jet""inverse_jet""inverse_jet" Fließender Übergang von rot über gelb, grün 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 „LookUpTable.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>)set_system("lut_dir",<Pfad>) ) gesucht. Der Aufruf von set_lutset_lutSetLutSetLutSetLutset_lut 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_lutSetLutSetLutSetLutset_lut kann nur bei Bildschirmen mit 256 Graustufen/Farben verwendet werden.

Ausführungsinformationen

Parameter

WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle (input_control)  window HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Fensteridentifikator.

LookUpTableLookUpTableLookUpTableLookUpTablelookUpTablelook_up_table (input_control)  filename.read(-array) HTupleMaybeSequence[Union[int, str]]HTupleHtuple (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" "default"

Wertevorschläge: 'default'"default""default""default""default""default", 'linear'"linear""linear""linear""linear""linear", 'inverse'"inverse""inverse""inverse""inverse""inverse", 'sqr'"sqr""sqr""sqr""sqr""sqr", 'inv_sqr'"inv_sqr""inv_sqr""inv_sqr""inv_sqr""inv_sqr", 'cube'"cube""cube""cube""cube""cube", 'inv_cube'"inv_cube""inv_cube""inv_cube""inv_cube""inv_cube", 'sqrt'"sqrt""sqrt""sqrt""sqrt""sqrt", 'inv_sqrt'"inv_sqrt""inv_sqrt""inv_sqrt""inv_sqrt""inv_sqrt", 'cubic_root'"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""inv_cubic_root", 'color1'"color1""color1""color1""color1""color1", 'color2'"color2""color2""color2""color2""color2", 'color3'"color3""color3""color3""color3""color3", 'color4'"color4""color4""color4""color4""color4", 'three'"three""three""three""three""three", 'six'"six""six""six""six""six", 'twelve'"twelve""twelve""twelve""twelve""twelve", 'twenty_four'"twenty_four""twenty_four""twenty_four""twenty_four""twenty_four", 'rainbow'"rainbow""rainbow""rainbow""rainbow""rainbow", 'temperature'"temperature""temperature""temperature""temperature""temperature", 'cyclic_gray'"cyclic_gray""cyclic_gray""cyclic_gray""cyclic_gray""cyclic_gray", 'cyclic_temperature'"cyclic_temperature""cyclic_temperature""cyclic_temperature""cyclic_temperature""cyclic_temperature", 'hsi'"hsi""hsi""hsi""hsi""hsi", 'change1'"change1""change1""change1""change1""change1", 'change2'"change2""change2""change2""change2""change2", 'change3'"change3""change3""change3""change3""change3", 'jet'"jet""jet""jet""jet""jet", 'jet_inverse'"jet_inverse""jet_inverse""jet_inverse""jet_inverse""jet_inverse"

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_lutSetLutSetLutSetLutset_lut liefert den Wert 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_lutQueryLutQueryLutQueryLutquery_lut, get_lutget_lutGetLutGetLutGetLutget_lut

Siehe auch

get_lutget_lutGetLutGetLutGetLutget_lut, query_lutquery_lutQueryLutQueryLutQueryLutquery_lut, set_colorset_colorSetColorSetColorSetColorset_color, set_rgbset_rgbSetRgbSetRgbSetRgbset_rgb, set_hsiset_hsiSetHsiSetHsiSetHsiset_hsi, write_lutwrite_lutWriteLutWriteLutWriteLutwrite_lut

Modul

Foundation