| Operatoren |
set_system — Verändern von HALCON-Systemparametern.
set_system( : : SystemParameter, Value : )
set_system ermöglicht es, verschiedene Systemparameter zu verändern.
Parallelisierungsinformation: Einige Parameter werden exklusiv gesetzt, d.h., sie blockieren andere Threads bis kein weiterer Operator mehr auf die HALCON Bibliothek zugreift.
Parameter, die mit *) markiert sind, gelten global und werden exklusiv ausgeführt.
Parameter ohne *) und ohne "tsp_" gelten ebenfalls global, werden jedoch nicht exklusiv ausgeführt, d.h., der Operatoraufruf blockiert keine anderen Operatoraufrufe.
Parameter mit "tsp_"-Variante sind Thread-spezifisch.
Werden sie ohne "tsp_" aufgerufen, dann gelten sie für alle Threads, die nach dem Aufruf gestartet werden und im aktuellen Thread. Bereits gestartete Threads werden nicht beeinflusst.
Parameter, die mit "tsp_" aufgerufen werden, gelten nur für den aktuellen Thread. Andere bereits laufende Threads werden nicht beeinflusst.
Mögliche Systemparameter:
Grafik:
Nach jeder HALCON-Operation, die eine Grafik-Ausgabe erzeugt, wird eine Flush-Operation ausgeführt, um die Daten sofort sichtbar zu machen. Bei einigen Programmen ist dies jedoch nicht nötig (z.B. wenn immer mit der Maus gearbeitet wird). In diesen Fällen kann 'flush_graphic' auf 'false' gesetzt werden, um die Laufzeit zu verbessern. Window-Manager von unixartigen Systemen führen eine automatische Flush-Operation durch, weshalb der Parameter bei diesen Betriebssystemen keine Auswirkungen hat.
Seit HALCON 13 ist es nicht mehr empfehlenswert, 'flush_graphic' zu verwenden, da dies zu unerwarteten Ergebnissen führen kann. Stattdessen sollte mit set_window_param der Parameter 'flush' auf 'false' gesetzt werden und zum Übertragen des Buffers auf das Grafikfenster flush_buffer aufgerufen werden.
Value: 'true' oder 'false'
Default: 'true'
Anzahl der signifikanten Bits bei int2 Bildern. Diese Anzahl wird für die Darstellung von int2 Bilder verwendet. Wenn der Wert -1 ist, werden die Grauwerte automatisch maximal skaliert (default).
Value: -1 oder 9..16
Default: -1
Legt fest, ob der Inhalt von Fenstern, falls diese sich überlappen, automatisch neu geladen wird. Einige Implementierungen von X-Windows sind fehlerhaft; um diesen Fehler zu umgehen, kann das Sichern des Inhalts abgeschaltet werden. Es kann in einigen Fällen sinnvoll sein, den Sicherungsmechanismus auszuschalten, wenn es auf Laufzeit / Speicherplatz ankommt.
Value: 'true' oder 'false'
Default: 'true'
Name von ikonifizierten Grafikfenstern unter X-Windows. Standardmäßig wird die Nummer des Grafikfensters angezeigt.
Value: Name des ikonifizierten Grafikfensters.
Default: 'default'
Default-Font für die Textausgabe in Text- oder Grafikfenstern. Verfügbare Fonts können mit query_font abgefragt werden. Die Syntax für Fontnamen in Value ist bei set_font beschrieben.
Value: Name des Fonts.
Default: 'fixed'
Legt fest, ob die HALCON-Farbtabellen an die Umgebung angepasst werden. Solche Hardware-abhängigen Farbtabellen werden nicht mehr verwendet und damit ist der Parameter obsolet. Mit dem Operator query_lut können die möglichen Farbtabellen abgefragt werden, von denen eine spezifische mit dem Operator set_lut gesetzt werden kann.
Value: 'true' oder 'false'
Default: 'false'
Wenn auf einem Microsoft Windows System einer der HALCON Grafikoperatoren aus einem anderen Thread aufgerufen wird, als derjenige, der das Ausgabefenster erzeugt hat, muss es eine aktive Schleife geben, innerhalb derer die Nachrichten vom Betriebssystem für dieses Fenster verarbeitet werden. Wird dieser Parameter auf 'true' gesetzt, werden alle HALCON Grafik- und Textfenster, die kein Vaterfenster haben, automatisch in einem speziellen Thread geöffnet, der für die Verarbeitung der Nachrichten verantwortlich ist. Alle Grafikoperatoren, die sich an dieses Fenster richten, werden dann ebenfalls in diesem Thread abgearbeitet. Dieser Parameter wird auf anderen Betriebssystemen als Windows ignoriert.
Value: 'true' oder 'false'
Default: 'false'
Wenn ein Zeichenobjekt oder ein Bild mittels attach_drawing_object_to_window oder attach_background_to_window an ein Fenster angehängt wird, werden alle dargestellten HALCON-Objekte in einem Stapel gespeichert. Die Größe dieses Stapels ist standardmäßig begrenzt. Sobald die Anzahl der anzuzeigenden HALCON-Objekte die Größe des Stapels überschreitet, werden die ältesten Einträge des Stapels gelöscht. Die Größe des Stapels kann mit dem Parameter 'graphic_stack_size' angepasst werden. Um beliebig viele HALCON-Objekte anzeigen zu können, muss der Wert für 'graphic_stack_size' auf Null gesetzt werden. Änderungen des Wertes von 'graphic_stack_size' gelten nur für Fenster, die nach der Änderung geöffnet werden. Die Stapelgröße kann also nicht rückwirkend für bereits geöffnete Fenster verändert werden. Der Stapel kann mit einem Aufruf von clear_window geleert werden.
Value: Größe des Stapels.
Default: 50
Bei der Ausgabe von Bilddaten über das Netz kann es bei starker Auslastung des Rechners oder des Netzes zu Fehlübertragungen kommen. Um dies zu vermeiden, werden die Daten in kleinen Paketen transportiert. Wird lokal am Rechner gearbeitet, so können diese Einheiten beliebig vergrößert werden, was zu einer wesentlichen Verbesserung der Ausgabeleistung führt. Unter X-Windows wird beim ersten Öffnen eines Fensters der Maximalwert für die Größe eines Requests abgefragt und der Wert von 'x_package' bei Bedarf verkleinert.
Value: Paketgröße (in Bytes).
Default: 131072
Bildverarbeitung:
Dieser Parameter prüft entweder vier Pixel (in horizontaler und vertikaler Richtung) oder alle acht benachbarten Pixel. Verwendung bei allen Operatoren, bei denen Nachbarschaftsbeziehungen untersucht werden: connection, get_region_contour, get_region_polygon, get_region_thickness, boundary, paint_region, disp_region, fill_up, contlength, shape_histo_all.
Value: 4 oder 8
Default: 8
| (1) | (2) |
Legt fest, ob neue Bilder vor der Anwendung von Filtern auf 0 gesetzt werden sollen, um sicherzustellen, dass die Filterergebnisse bei wiederholter Programmausführung auf Systemen mit gleicher Konfiguration konsistent sind. Dies ist nicht nötig, falls immer das ganze Bild gefiltert wird oder die Daten der ungefilterten Bildbereichen nicht von Bedeutung sind.
Value: 'true' oder 'false'
Default: 'true'
Legt fest, wie sich Operationen, die Objekten verarbeiten, bei leeren Bildern (= keine Bilder) als Eingabe verhalten sollen.
Mögliche Werte für
'true': Fehler wird ignoriert.
'exception': Eine Fehlerbehandlung wird durchgeführt.
Default: 'true'
steuert das Verhalten von Operatoren auf leere Eingaberegionen, die für solche Regionen eigentlich nicht sinnvoll sind (z.B. diverse Regionenmerkmale, Segmentation, etc.).
Mögliche Werte für
'true': Der Fehler wird so gut es geht ignoriert
'exception': Eine Fehlerbehandlung wird durchgeführt.
Default: 'true'
Bei einer Reihe von Operationen kann es vorkommen, dass Objekte mit leerer Region (= keine Bildpunkte) erzeugt werden (z.B. intersection, threshold, etc.). Dieser Parameter legt fest ob diese Operatoren ein Objekt mit leerer Region als Ergebnis ausgegeben ('true') oder ob die Regionen unterdrückt also nicht ausgegeben werden sollen ('false').
Value: 'true' oder 'false'
Default: 'true'
Legt fest, ob die Regionen in der HALCON-Datenbank auf das aktuelle Bildformat beschnitten („geclippt“) werden oder nicht. Dies ist bei Operatoren wie z.B. bei gen_circle, gen_rectangle1 oder dilation1 der Fall.
Siehe auch reset_obj_db.
Value: 'true' oder 'false'
Default: 'true'
Zoomen von Bildern mit Integer-Arithmetik ('true') oder mit Floatingpoint-Arithmetik.
Value: 'true' oder 'false'
Default: 'true'
Dieser Parameter legt fest, ob die mit create_shape_model oder create_scaled_shape_model generierten Modelle vollständig vorab generiert werden ('true') oder nicht, falls dies nicht explizit in create_shape_model oder create_scaled_shape_model festgelegt wird. Dieser Parameter dient hauptsächlich dazu, die Umstellung zwischen diesen beiden Modi mit möglichst wenig Änderungen am Programmcode durchzuführen. Im Normalfall muss nur eine Zeile eingefügt oder geändert werden.
Value: 'true' oder 'false'
Default: 'false'
Dieser Parameter legt fest, ob die mit find_component_model, find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, find_aniso_shape_models, find_planar_uncalib_deformable_model, find_planar_calib_deformable_model oder find_local_deformable_model gesuchten Modelle teilweise außerhalb des Bildes liegen dürfen (also den Bildrand überschreiten dürfen).
Value: 'true' oder 'false'
Default: 'false'
Dieser Parameter legt fest, ob der im Operator render_object_model_3d verwendete Grafikkartenkontext für weitere Aufrufe dieses Operators zwischengespeichert wird. Die Zwischenspeicherung beschleunigt spätere Aufrufe dieses Operators, benötigt aber zusätzliche Ressourcen. Um den Kontext explizit zu löschen muss 'opengl_context_cache_enable' auf 'false' gesetzt werden und render_object_model_3d einmalig aufgerufen werden. 'opengl_context_cache_enable' kann nur auf 'true' gesetzt werden, wenn die Grafikkarte das Rendern von 3D Objektmodellen unterstützt.
Value: 'true' oder 'false'
Default: 'true', sofern von der Grafikkarte unterstützt.
Dieser Parameter legt fest, ob die durch die Grafikkarte beschleunigte Verdeckungsberechnung in den Operatoren create_shape_model_3d, find_shape_model_3d, project_shape_model_3d und project_object_model_3d verwendet wird. 'opengl_hidden_surface_removal_enable' kann nur auf 'true' gesetzt werden, wenn die Grafikkarte die Beschleunigung des Algorithmus zur Verdeckungsberechnung unterstützt. Mindestvoraussetzungen sind OpenGL 2.0 und die Erweiterungen GL_EXT_framebuffer_object und GL_ARB_texture_float. Der get_system Parameter 'opengl_hidden_surface_removal_available' kann verwendet werden, um diese Information abzufragen. Es ist nicht möglich diese Beschleunigung über den Windows Remote Desktop oder X11 Weiterleitung zu verwenden.
Value: 'true' oder 'false'
Default: 'true' sofern von der Grafikkarte unterstützt.
Dieser Parameter legt fest, ob die Visualisierung von 3D-Objektmodellen durch disp_object_model_3d mit hohen OpenGL-Anforderungen oder im Kompatibilitätsmodus mit OpenGL 1.1 durchgeführt wird. Wenn 'opengl_compatibility_mode_enable' auf 'false' gesetzt wird, dann entscheidet HALCON automatisch, welcher Visualisierungsmodus von der Grafikkarte unterstützt wird. Sollten bei der Visualisierung Probleme auftreten, so kann der Parameter auf 'true' gesetzt werden. Value: 'true' oder 'false'
Default: 'false'.
Dieser Parameter legt fest, welche DPI-Auflösung in Bilddateien, die mit write_image geschrieben werden, und die die DPI-Auflösung abspeichern, eingetragen wird.
Value: Auflösung in DPI.
Default: 300
Legt die interne Bildbreite des Systems fest. Mit dieser Größe werden beispielsweise Regionen geclippt oder Speicherannahmen getroffen, wenn einem Operator keine weitere Bildinformationen zu Verfügung stehen. Diese Bildbreite wird als maximale Breite aller HALCON-Bildobjekte interpretiert, und somit beim Generieren neuer, größerer Bilder erhöht. Siehe auch reset_obj_db.
Value: Interne Bildbreite.
Default: 128
Legt die interne Bildhöhe des Systems fest. Mit dieser Größe werden beispielsweise Regionen geclippt oder Speicherannahmen getroffen, wenn einem Operator keine weitere Bildinformationen zu Verfügung stehen. Diese Bildhöhe wird als maximale Höhe aller HALCON-Bildobjekte interpretiert, und somit beim Generieren neuer, größerer Bilder erhöht. Siehe auch reset_obj_db.
Value: Interne Bildhöhe.
Default: 128
Regionen werden intern in einer Lauflängenkodierung abgelegt. Mit diesem Parameter kann die maximale Anzahl der Sehnen festgelegt werden, die für die Darstellung einer Region verwendet werden können. Es ist zu beachten, dass einige Operatoren selbständig die Anzahl hochsetzen, falls dies notwendig ist. Der Wert kann sowohl vergrößert als auch verkleinert werden.
Value: Maximale Sehnenzahl.
Default: 50000
Parallelisierung:
Gibt an, ob HALCON eine automatische Parallelisierung einsetzt, um die Abarbeitung von Operatoren auf Mehrprozessormaschinen zu beschleunigen. Durch das Setzen auf 'false' wird die automatische Parallelisierung abgeschaltet, wobei HALCON jedoch auch weiterhin nicht nur thread-safe bleibt, sondern auch die gleichzeitige Abarbeitung mehrerer HALCON-Operatoren erlaubt. Das Setzen auf 'false' ist zum Beispiel dann sinnvoll, wenn HALCON-Operatoren innerhalb eines parallelen Programms aufgerufen werden, das auch das Scheduling bzw. ein geeignetes Load-Balancing der Operatoren und Daten selbst festlegt. In diesem Fall kann es wünschenswert sein, dass HALCON nicht auch noch zusätzliche Parallelisierungsschritte selbst durchführt, die dem Load-Balancing-Konzept der Anwendung in die Quere kommen könnten. Um eine feinere Kontrolle über die automatische Parallelisierung zu erreichen können auch einzelne Methoden der Datenparallelisierung an- und ausgeschaltet werden. 'split_tuple' schaltet die Möglichkeit der Tupelparallelisierung, 'split_channel' der Bildkanalparallelisierung, 'split_domain' der Bilddomainparallelisierung und 'split_partial' die der teilweisen internen Operatorparallelisierung wieder an. Mit einem vorangestelltem '~' kann man die entsprechende Parallelisierungsmethode deaktivieren. Durch die Übergabe eines Tupels können auch mehrere Methoden gleichzeitig an- bzw. ausgeschaltet werden. So ist das Tuple ['split_tuple','split_channel', 'split_domain','split_partial'] gleichbedeutend mit dem Wert 'true'.
Welche Methoden von einem Operator unterstützt werden, kann diesem Referenzhandbuch entnommen werden oder über den Operator get_operator_info mit Hilfe des Parameterwertes 'parallel_method' erfragt werden.
Value: 'true', 'false', 'split_tuple', 'split_channel', 'split_domain', 'split_partial', '~split_tuple', '~split_channel', '~split_domain', '~split_partial'
Default: 'true'
Gibt an, ob HALCON innerhalb einer parallel arbeitenden Programmumgebung eingesetzt wird, oder nicht. Ist der Parameter auf 'true' gesetzt, werden interne Synchronisierungsmechanismen verwendet, um gemeinsam benutzte Datenobjekte vor parallelen Zugriffen zu schützen. So notwendig diese Maßnahme in einer echt parallel arbeitenden Anwendung sein mag, so unerwünscht ist der dadurch entstehende Overhead, falls die Anwendung alle HALCON-Operatoren rein sequentiell aufruft. Für den letzteren Fall kann man dem System die sequentielle Arbeitsweise durch das Setzen auf 'false' signalisieren. Hierauf werden die internen Synchronisierungsmechanismen außer Kraft gesetzt, so dass sich der Overhead verringert. Daraus folgt natürlich, dass HALCON dann nicht mehr thread-safe ist. Hierdurch ergibt sich als Seiteneffekt, dass durch das Setzen von 'reentrant' auf 'false' auch die interne Parallelisierung außer Kraft gesetzt wird, die HALCON normalerweise einsetzt, um die Abarbeitung von Operatoren auf Mehrprozessormaschinen zu beschleunigen. Wird 'reentrant' hingegen auf 'true' gesetzt, so geht HALCON in den Standardbetrieb über, das heißt, es arbeitet thread-safe und es setzt die automatische Parallelisierung von Operatoren ein.
Value: 'true' oder 'false'
Default: 'true'
Setzt die Anzahl der Threads, die von HALCON für die automatische Operator Parallelisierung (AOP) verwendet werden. Die Zahl beinhaltet den Main-Thread und kann aus Effizienzgründen die Anzahl der Prozessoren nicht übersteigen. Das Herabsetzen der Threadanzahl ist interessant, wenn neben der automatischen Parallelisierung weitere Arbeitsthreads des Benutzers Prozessoren belegen. Damit kann die Anzahl von verarbeitenden Threads in einer Applikation der Prozessorenanzahl angeglichen werden. Wurde für den HALCON-Prozess eine Prozessorzugehörigkeit festgelegt, kann mit 'default' auf diese festgelegte Anzahl zurückgeschaltet werden. Andernfalls setzt 'default' die Threadanzahl auf die Anzahl der Prozessoren. Wenn die Thread-spezifische Variante ('tsp_thread_num') verwendet wird, reserviert HALCON die angegebene Anzahl an Threads exklusiv für den aufrufenden Thread. Die Summe der Thread-spezifisch reservierten Threads kann die über 'thread_num' spezifizierte Anzahl von Threads nicht übersteigen. Wurden für den aufrufenden Thread noch keine AOP-Threads Thread-spezifisch reserviert, gibt get_system für den Parameterwert 'tsp_thread_num' den Wert -1 zurück.
Gibt man als Anzahl der Threads 1 an, wird die automatische Parallelisierung ausgeschaltet (Thread-spezifisch, wenn angegeben).
Value: 1 <= Value <= 'processor_num', 'default'
Default: 'default'
Gibt an, ob HALCON für die automatische Parallelisierung stets neue Threads erzeugt ('false') oder auf einen bestehenden Pool von Threads zurückgreift ('true'). Mit der Aktivierung eines Thread-Pools arbeitet die automatische Parallelisierung effizienter. Wird die automatische Parallelisierung jedoch dauerhaft nicht benötigt, kann der Pool deaktiviert werden, um Resourcen des Betriebsystems zu sparen.
Value: 'true', 'false'
Default: 'true'
Datei:
Mit diesem Parameter wird festgelegt, ob die Ausgabezeichen des Operators fwrite_string direkt im Ausgabemedium angezeigt werden. Wenn er auf 'false' gesetzt ist, werden die Zeichen auf dem Terminal in der Regel erst nach einem Aufruf des Operators fnew_line sichtbar.
Value: 'true' oder 'false'
Default: 'true'
Dieser Parameter legt die Version des Dateiformats fest, mit dem eine OCR-Trainingsdatei geschrieben wird. So speichern die Operatoren write_ocr_trainf, write_ocr_trainf_image und concat_ocr_trainf die Trainingsdaten für Versionsnummer 1 im ASCII-Format und für Versionsnummer 2 und 3 im Binärformat ab. Versionsnummer 3 kann byte- und uint2-Bilder abspeichern. Die binäre Version schreibt und liest die Daten schneller und speichert die Datei in einem komprimierteren Format ab. Das ASCII-Format ist kompatibel zu älteren HALCON-Releases. Abhängig von der Version des Dateiformats können die OCR-Trainingsdateien von folgenden HALCON-Releases eingelesen werden:
1 - Alle HALCON-Releases
2 - 7.0.2 und höher
3 - 7.1 und höher
Value: 1, 2, 3
Default: 3
Dieser Parameter legt fest, wie die HALCON-Bibliothek Strings interpretiert. Wie der Name andeutet, wurde der Parameter eingeführt, um mit speziellen Zeichen in Datei- oder Ordnernamen umgehen zu können.
Zum jetzigen Zeitpunkt funktioniert der Umgang mit Datei- oder Ordnernamen, die Ausgabe von Text in Grafikfenstern und die Interpretation von Daten in QR-Codes nur richtig, wenn die dort verwendeten Strings mit dem mit 'filename_encoding' spezifiziertem Encoding übergeben (oder interpretiert) werden.
Zusätzlich beeinflusst dieser Parameter das Encoding von Strings, die von HDevelop oder HALCON/.NET an die HALCON-Bibliothek übergeben werden. Das hat zur Folge, dass Strings in diesen Umgebungen immer dem erwarteten Encoding entsprechen und unabhängig von diesem Parameter funktionieren. Allerdings ist es nur mit der Einstellung 'utf8' möglich, Zeichen zu verwenden, die nicht von dem lokalen Encoding unterstützt werden, wie beispielsweise die Darstellung von japanischen Buchstaben auf einem englischen Windows-System.
Wenn Strings von HALCON/C or HALCON/C++ übergeben werden, gibt es keine automatische Konvertierung, da das Eingabe-Encoding unbekannt ist. Daher ist der Benutzer dafür zuständig, das korrekte Encoding zu übergeben.
Die Einstellung 'filename_encoding' ist global und beeinflusst alle Threads. Dies bedeutet, wird dieser Wert in einem Thread geändert während andere Threads Strings bearbeiten, resultiert ein undefiniertes Verhalten, welches zu Abstürzen führen kann.
Abgesehen von den oben genannten Bereichen ist die HALCON-Bibliothek noch nicht Encoding-sensitiv. Das bedeutet, dass Funktionalitäten, die String-Inhalte als Buchstaben interpretieren, wie beispielsweise String-Operatoren oder reguläre Ausdrücke, nur mit 'plain' ASCII verlässliche Ergebnisse liefern.
Zusätzlich überprüfen auch Funktionalitäten, die Strings als Bitströme interpretieren, nicht das Ausgabe-Encoding - das Resultat hängt also vom Input-Encoding des Strings ab. Das betrifft zum Beispiel das Speichern von Dateien, das Senden per Sockets und die Konvertierung zu Byte-Tupeln. Außerdem betrifft diese Thematik auch das Encoding von Symbol-Namen von OCR-Zeichen. Daher werden eventuell spezielle Zeichen in Klassifikatoren oder Trainingsdateien falsch dargestellt, wenn sie mit unterschiedlichen Einstellungen oder auf unterschiedlichen Systemen oder in unterschiedlichen Umgebungen genutzt werden.
Insbesondere ist zu beachten, dass es aufgrund von unterschiedlichen Systemen oder Umgebungen (die automatische Konvertierung betreffend) dazu kommen kann, dass sich das Verhalten von Code in HDevelop und exportierten Programmen unterscheiden kann.
Value: 'locale' oder 'utf8'
Default: 'locale'
Verzeichnisse:
Dieser Parameter liefert das Hauptverzeichnis der HALCON-Installation zurück.
Value: Name des Verzeichnisses.
HDevelop-Beispielprogramme werden im Verzeichnis 'example_dir' gesucht, wenn sie z.B. über den Dialog HDevelop Beispielprogramme durchsuchen oder aus den Abschnitten HDevelop Beispiele im Referenzhandbuch geladen werden. Es ist zu beachten, dass diese Mechanismen zum Laden von HDevelop Beispielprogrammen nur dann funktionieren, wenn 'example_dir' auf ein Verzeichnis gesetzt ist, welches die installierten HDevelop Beispielprogramme enthält.
Value: Name des Verzeichnisses.
Bilddaten (z.B. read_image und read_sequence) werden im aktuellen Verzeichnis und im 'image_dir' gesucht (sofern keine absoluten Pfade angegeben werden). Man kann mehrere Verzeichnisse angegeben (Suchpfad), jeweils getrennt durch ein Semikolon (Windows) bzw. einen Doppelpunkt (unixartige Systeme). Der Pfad kann auch mit der Umgebungsvariablen HALCONIMAGES festgelegt werden.
Value: Name des Verzeichnisses.
3D-Objektmodelle (z.B. read_object_model_3d) werden im aktuellen Verzeichnis und im '3d_model_dir' gesucht (sofern keine absoluten Pfade angegeben werden). Man kann mehrere Verzeichnisse angegeben (Suchpfad), jeweils getrennt durch ein Semikolon (Windows) bzw. einen Doppelpunkt (unixartige Systeme).
Value: Name des Verzeichnisses.
Farbtabellen (set_lut), die als ASCII-Datei realisiert sind, werden im aktuellen Verzeichnis und im 'lut_dir' gesucht (sofern keine absoluten Pfade angegeben werden). Per Default-Einstellung sucht HALCON die Farbtabellen im Unterverzeichnis „lut“.
Value: Name des Verzeichnisses.
Die Online-Textdateien {german oder english}.hlp, .key, .sta, .num und .idx werden im aktuellen Verzeichnis und im 'help_dir' gesucht. Dieser Systemparameter wird u.a. für get_operator_info und get_param_info benötigt. Dieser Parameter kann auch vor dem Aufruf von HALCON durch die Umgebungsvariable HALCONROOT gesetzt werden. Dabei muss die Variable auf das Verzeichnis oberhalb des Hilfe-Verzeichnisses zeigen (das ist das HALCON Home-Verzeichnis): z.B.: '/usr/local/halcon'
Value: Name des Verzeichnisses.
Andere:
Bestimmt das Verhalten im Fall von HALCON Low-Level-Fehlern.
Ist der Parameter 'do_low_error' auf 'false' gesetzt, so werden keine Low-Level-Fehler ausgegeben. Die Low-Level-Fehler werden jedoch weiterhin in der Ausgabekonsole (einem Fenster, in dem man ein Protokoll der letzten Meldungen ansehen kann) angezeigt, die über das Fenster-Menü aufgerufen werden kann.
Ist der Parameter auf 'disabled' gesetzt, so werden die Low-Level-Fehler ganz unterdrückt und erscheinen auch in der Ausgabekonsole nicht mehr.
Ist der Parameter auf 'stderr' bzw. 'message_box' gesetzt, so wird der entsprechende Low-Level-Fehlertext in die Standard-Fehlerausgabe geschrieben, bzw. wird ein Dialog geöffnet, der den Fehlertext anzeigt (letztere Funktionalität ist nur auf Windows Systemen implementiert).
Mithilfe des Parameterwertes 'callback' kann eine Callback-Prozedur angegeben werden, die im Falle eines Low-Level-Fehlers aufgerufen werden soll. Die Adresse dieser Callback-Prozedur wird im zweiten Indexeintrag des Parameters Value angegeben.
Die Signatur der Callback-Funktion lautet folgendermaßen:
Herror LowErrorCallbackProc(const char* err_text)Auf Windows 32-Bit-Systemen wird die __stdcall Namenskonvention verwendet:
Herror (\_\_stdcall LowErrorCallbackProc)(const char* err_text)
Der Parameterwert 'callback' kann in HDevelop nur verwendet werden, falls als Callback-Prozedur 0 angegeben wird. In diesem Fall erfolgt keine Fehlerausgabe.
Sollen Low-Level-Fehlertexte in eine Datei geschrieben werden, so kann dies über den Parameterwert 'file' angegeben werden. Dabei muss das Handle einer zuvor mittels open_file geöffneten Datei zusätzlich übergeben werden.
Die Parameterwerte 'callback' bzw. 'file' können nur in Kombination mit einer entsprechenden callback-Prozedur bzw. einem File-Handle verwendet werden.
Für 'do_low_error' können, mit Ausnahme von 'false', auch mehrere Parameterwerte in einem Tupel übergeben werden. Die entsprechenden Aktionen werden im Fall eines Low-Level-Fehlers in der Reihenfolge der im Parameterwertetupel angegebenen Werte ausgeführt. Beinhaltet das Tupel mehrmals den gleichen Parameterwert, so wird lediglich das erste Vorkommnis berücksichtigt, d.h. es ist nicht möglich, im Fehlerfall die gleiche Aktion öfters ausführen zu lassen. Falls für 'do_low_error' mehrere Parameterwerte oder einer der Werte 'file' oder 'callback' angegeben werden, so kann 'do_low_error' nicht zusammen mit anderen Systemparametern in einem Aufruf von set_system gesetzt werden.
Jedes Setzen von 'do_low_error' mittels set_system überschreibt die vorherigen Einstellungen dieses Systemparameters.
Wird 'do_low_error' ausschließlich auf den Wert 'true' gesetzt, so entspricht dies auf Windows-Systemen dem Parameterwert 'message_box' und auf unixartigen Systemen dem Parameterwert 'stderr'.
Value: 'true', 'false', 'disabled', 'stderr', 'message_box', 'callback', 'file'
Default: 'false'
Viele "draw_" Operatoren (wie z.B. draw_region oder draw_rectangle1) können abgebrochen werden, indem das Zeichnen mit der rechten Maustaste beendet wird, ohne zuvor neue Objekte gezeichnet oder bestehende modifiziert zu haben. "draw_" Operatoren können auch über die Stopptaste im HDevelop abgebrochen werden. Der abgebrochene Operator liefert leere Objekte bzw. leere Tupel zurück. 'cancel_draw_result' steuert das Verhalten von "draw_" Operatoren die abgebrochen wurden.
The following values are available for
'true': Es wird kein Fehler zurückgegeben.
'exception': Eine Fehlerbehandlung wird durchgeführt.
Default: 'true'
Setzt den Seed des threadspezifischen Zufallszahlengenerators, der in den Operatoren tuple_rand, add_noise_white, add_noise_distribution, gen_random_region und add_noise_white_contour_xld verwendet wird. Wurde kein Seed gesetzt, wird die Systemzeit beim ersten Aufruf von einem der genannten Operatoren als Seed verwendet. Der verwendete Seed kann dann mit get_system abgefragt werden.
Dieser Parameter akzeptiert nur ganzzahlige Werte oder den String 'default' um das das Defaultverhalten wiederherzustellen.
Legt fest, auf welche Art die Messung von Zeitintervallen in count_seconds erfolgt.
'performance_counter' misst die vergangene Systemzeit mit möglichst hoher Genauigkeit. In Abhängigkeit vom verwendeten Betriebssystem werden unterschiedliche Verfahren verwendet. Sollten bestimmte Messfunktionen vom jeweiligen System nicht unterstützt werden, wird auf weniger hoch aufgelöste Verfahren zurückgegriffen. Unter Windows wird der Performance Counter benutzt. Für nähere Informationen über den Performance Counter wird auf die Windows Dokumentation im Microsoft Developer Network (MSDN) verwiesen. Der Performance Counter bietet, soweit vorhanden, die beste Genauigkeit (unter einer Millisekunde). Allerdings besteht die Möglichkeit, dass er aufgrund von Problemen mit der Energieverwaltung und/oder dem Multithreading falsche Werte liefert. Wird unter Windows kein Performance Counter unterstützt, so greift die Einstellung 'multimedia_timer'. Auf unixartigen Systemen (z.B. Linux oder macOS) ist die Genauigkeit ebenso unter einer Millisekunde und auch hier könnten Probleme durch Energieverwaltung und Multithreading auftreten. Sollten Probleme dieser Art auftreten, können Sie die Einstellung 'elapsed_time' verwenden.
'elapsed_time' misst die vergangene Systemzeit ähnlich wie bei der Einstellung 'performance_counter'. Der Unterschied besteht darin, dass Messfunktionen verwendet werden, die eine geringere Auflösung haben, aber dafür weniger sensibel auf Energieverwaltung und Multithreading reagieren. Die Genauigkeit liegt in der Regel bei einer Millisekunde. Diese Einstellung sollte verwendet werden, wenn die Messungen im Modus 'performance_counter' unzuverlässig sind und Ihnen die Auflösung von einer Millisekunde ausreicht.
'multimedia_timer' verwendet unter Windows die Multimedia Timer. Für nähere Informationen über Multimedia Timer wird auf die Windows Dokumentation im Microsoft Developer Network (MSDN) verwiesen. Multimedia Timer stellen eine Auflösung von einer Millisekunde bereit. Sollte auf Ihrem System diese Auflösung nicht erreicht werden, können Sie versuchen diese mittels der Windows Funktionen 'timerBeginPeriod' und 'timerEndPeriod' zu erhöhen (mehr Informationen darüber finden Sie ebenso im MSDN). Unter unixartigen Betriebssystemen gibt es keine Multimedia Timer, und daher werden dort dieselben Verfahren wir im Modus 'performance_counter' verwendet.
'processor_time' misst die CPU-Rechenzeit des aktuellen Prozesses. Diese Messung ist weitgehend unabhängig von der Systemlast durch andere Prozesse. Ein großer Nachteil ist jedoch, dass auf den meisten Systemen die Auflösung gering und daher die Messung ungenau ist. Weiterhin ist zu beachten, dass die Laufzeit vieler Anwendungen nicht nur durch CPU-Rechenzeit, sondern auch durch Input/Output oder das Speicherverhalten stark beeinflusst wird. In solchen Anwendungen sollte die Einstellung 'performance_counter' oder 'elapsed_time' verwendet werden.
Default: 'performance_counter'
Man beachte, dass bei den Einstellungen 'performance_counter' und 'elapsed_time' die tatsächlich vergangene Systemzeit gemessen wird. Die Länge eines gemessenen Intervalls hängt folglich auch von der Auslastung des Systems durch weitere Prozesse ab. Wird dieser Modus zur Messung der Verarbeitungszeit des eigenen Prozesses verwendet, muss der Benutzer dafür sorgen, dass die Zeitmessung nicht durch andere Prozesse gestört wird.
Legt fest, auf welche Art die Zeitmessung bei Timeouts durchgeführt werden soll.
'elapsed_time': Siehe Beschreibung in Abschnitt 'clock_mode'.
'multimedia_timer': Siehe Beschreibung in Abschnitt 'clock_mode'.
'performance_counter': Siehe Beschreibung in Abschnitt 'clock_mode'.
Default: 'multimedia_timer' auf Windows-Systemen, 'elapsed_time' auf unixartigen Systemen
Legt die maximale Anzahl von Regionen fest, die von connection zurückgeliefert wird. Für Value=0 werden alle Regionen zurückgeliefert.
Value: >=0
Default: 0
Zeiger auf externe Funktion zur Speicherallokation von Ergebnisbildern. Diese Funktion sollte die folgende Signatur haben: 'void* ExternAllocFunc(size_t)'. Wenn 0 übergeben wird, dann wird die HALCON-Allokationsfunktion verwendet.
Value: Funktionszeiger.
Default: 0
Zeiger auf externe Funktion zur Speicherfreigabe von Ergebnisbildern. Diese Funktion sollte die folgende Signatur haben: 'void ExternFreeFunct(void*)'. Wenn 0 übergeben wird, dann wird die HALCON-Freigabefunktion verwendet.
Value: Funktionszeiger.
Default: 0
Um das Allokieren von neuen Bildern zu beschleunigen, wird bestehender Bildspeicher nicht freigegeben sondern wiederverwendet, solange die Speichergröße aller gepufferten Bilder die angegebene Grenze nicht überschreitet. Mit diesem Parameter kann man die Obergrenze für Speicher in Bytes setzen. Diese Funktionalität kann abgeschaltet werden, indem 'image_cache_capacity' auf 0 gesetzt wird.
Value: Obergrenze für die Größe des HALCON Bildspeichers.
Default: 16777216 (16MByte)
Modus des Caches für globalen, außerhalb von Operatoren sichtbaren Speicher. Er regelt, ob unbenutzter globaler Speicher zwischengespeichert ('shared') oder freigegeben ('idle') wird. Zusätzlich gibt es die Möglichkeit, den globalen Speicher für jeden Thread separat zwischenzuspeichern ('exclusive'). In diesem Fall kann die Rechengeschwindigkeit auf Kosten des Speicherbedarfs sinken. Mit Hilfe des Aktionsparameters 'cleanup' können die im Cache gehaltenen Speicherblöcke bei Bedarf wieder physikalisch freigegeben werden.
Value: 'idle', 'exclusive', 'shared'
Default: 'exclusive'
Dieser Parameter steuert den Betriebsmodus des Caches für temporären Speicher, mit dessen Hilfe Anwendungen beschleunigt werden können. Für die meisten Anwendungen ist die Default-Einstellung ('exclusive') die beste Wahl. Folgende Modi werden unterstützt:
'idle' Der Cache ist abgeschaltet. In diesem Modus wird am wenigsten Speicher verbraucht, dafür wird die Anwendung aber langsamer laufen als in den anderen Modi.
'shared' Alle temporären Speicherblöcke werden im globalen Reservoir für temporäre Speicherblöcke gecached. Dieser Modus benötigt weniger Speicher als der 'exclusive'-Modus, allerdings wird die Anwendung im Normalfall etwas langsamer laufen.
'exclusive' Alle temporären Speicherblöcke werden lokal von jedem Thread gecached. Dieser Modus verwendet am meisten Speicher, dafür wird aber normalerweise die Anwendung am schnellsten laufen.
'aggregate' Temporäre Speicherblöcke, die größer als der mit dem Parameter 'alloctmp_max_blocksize' eingestellte Schwellwert sind, werden im globalen Reservoir gecached, während alle kleineren Blöcke zu einem einzigen Speicherblock zusammengefasst werden, den jeder Thread lokal cached. Die Größe des zusammengefassten Blocks bestimmt sich aus dem maximalen Bedarf an temporärem Speicher, den ein Thread bisher festgestellt hat, wird aber nicht größer sein als 'alloctmp_max_blocksize', bzw. kleiner als 'alloctmp_min_blocksize' (sofern der entsprechende Parameter gesetzt ist). Dieser Modus versucht ein Gleichgewicht zwischen Ausführungszeit und Speicherverbrauch zu finden --- für eine effektive Funktion müssen aber 'alloctmp_min_blocksize' und 'alloctmp_max_blocksize' gemäß der tatsächlichen Speichernutzung der Anwendung korrekt eingestellt werden.
Das Setzen des Cachemodus auf 'idle' (oder 'false') geschieht exklusiv, siehe den obigen Abschnitt „Parallelisierungsinformation“. Im Gegensatz dazu geschieht das Setzen des Cachemodus auf einen anderen Modus im reentrant Modus, also ohne Blockieren anderer HALCON Operatoren.
Aus Kompatibilitätsgründen akzeptiert der Parameter auch die Werte 'false' und 'true'; dies entspricht 'idle' bzw. 'exclusive'.
Value: 'idle', 'shared', 'exclusive', oder 'aggregate'
Default: 'exclusive'
Wird dieser Parameter auf 'true' gesetzt, ist das globale Reservoir für temporäre Speicherblöcke aktiviert. Ist er auf 'false' gesetzt, ist das Reservoir deaktiviert und alle Speicherblöcke, die sonst im Reservoir gecached würden, werden statt dessen freigegeben.
Jeder Thread, der einen neuen temporären Speicherblock benötigt, prüft zuerst, ob im Reservoir ein entsprechender Block verfügbar ist, bevor er vom System neuen Speicher anfordert. Speicherblöcke werden von Threads belegt, deren Caches für temporären Speicher im Modus 'shared' oder 'aggregate' betrieben werden.
Die globale Einstellung dieses Parameters hat Vorrang vor der thread-spezifischen Einstellung, d.h. wenn 'temporary_mem_reservoir' auf 'true' gesetzt ist, wird die Einstellung für 'tsp_temporary_mem_reservoir' ignoriert.
Value: 'false' oder 'true'
Default: 'true'
Die Anzahl von Bytes, die maximal im globalen Reservoir für temporäre Speicherblöcke gecached werden. Wird dieser Parameter auf -1 gesetzt, ist das Reservoir nur von der insgesamt verfügbaren Speichermenge begrenzt. Value: -1 oder >= 0
Default: -1
Minimale Größe der Speicherblöcke (in Bytes), die von der temporären Speicherverwaltung gecached werden. (Ohne Effekt, falls 'temporary_mem_cache' == 'false'). Mit der Default-Einstellung -1 verwendet HALCON eine auf der Bildgröße basierende Heuristik, um eine vernünftige Blockgröße zu bestimmen. Für die meisten Anwendungen ist dies die beste Einstellung. Wird dieser Parameter auf einen Wert größer gleich Null gesetzt, verwendet HALCON an Stelle der Heuristik diesen Wert. Die minimale Größe wird ignoriert, sofern ein HALCON Operator ein Speicherobjekt benötigt, das nicht in einen Block dieser Größe hineinpaßt.
Value: -1 oder >= 0
Default: -1
Maximale Größe der Speicherblöcke (in Bytes), die von der temporären Speicherverwaltung gecached werden. (Ohne Effekt, falls 'temporary_mem_cache' == 'false'). Mit Hilfe dieses Parameters kann die maximale Blockgröße begrenzt werden, die von der von HALCON verwendeten Heuristik bestimmt wird, wenn 'alloctmp_min_blocksize' auf -1 gesetzt ist. Sofern der temporäre Speichercache nicht im Cachemodus 'aggregate' betrieben wird, sollte es generell unnötig sein, diesen Parameter zu setzen. Im 'aggregate'-Modus begrenzt dieser Parameter zusätzlich die maximale Größe des kombinierten Speicherblocks und bestimmt, ab welcher Größe temporäre Speicherblöcke im globalen Reservoir gecached werden. In allen Modi wird dieser Parameter ignoriert, wenn ein HALCON Operator ein temporäres Speicherobjekt benötigt, das größer als die aktuelle maximale Blockgröße ist.
Value: -1 oder >= 0
Default: -1
Legt fest, ob die in HALCON instanziierten Bilddatenobjekte in den fünf Relationen (Grauwertdaten, Regionendaten, XLDs, Bildobjekte und Objekttupel) der HALCON-Datenbank gelistet werden. Die Relationen können dann beispielsweise zur Fehlerbeseitigung genutzt werden. Beachte, dass das Sammeln von Informationen für die Datenbank nicht thread-safe ist, wenn iconisch Objekte zwischen den Threads ausgetauscht werden, d.h. wenn Objekte in einem anderen Therad zerstört werden als in dem sie erzeugt wurden.
Siehe auch count_relation,reset_obj_db.
Value: 'true' oder 'false'
Default: 'false'
Bestimmt, ob MMX-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'mmx_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU MMX unterstützt, sonst 'false'
Bestimmt, ob SSE-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'sse_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU SSE unterstützt, sonst 'false'
Bestimmt, ob SSE2-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'sse2_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU SSE2 unterstützt, sonst 'false'
Bestimmt, ob SSE3-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'sse3_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU SSE3 unterstützt, sonst 'false'
Bestimmt, ob SSSE3-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'ssse3_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU SSSE3 unterstützt, sonst 'false'
Bestimmt, ob SSE41-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'sse41_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU SSE41 unterstützt, sonst 'false'
Bestimmt, ob SSE42-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'sse42_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU SSE42 unterstützt, sonst 'false'
Bestimmt, ob AVX-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'avx_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU AVX unterstützt, sonst 'false'
Bestimmt, ob AVX2-Operationen zur Beschleunigung ausgewählter Bildverarbeitungs-Operatoren verwendet werden sollen ('true') oder nicht ('false'). (Ohne Effekt, falls 'avx2_supported' == 'false', siehe hierzu Operator get_system)
Value: 'true' oder 'false'
Default: 'true', falls die CPU AVX2 unterstützt, sonst 'false'
Sprache, in der die Fehlermeldungen ausgegeben werden.
Value: 'english' oder 'german'.
Default: 'english'
Es ist zu beachten, dass trotz der Information unter 'Parallelisierung' bezüglich des Multithreading-Typs nicht alle Parameter 'reentrant' sind. Parameter, auf die ein *) folgt, werden exklusiv ausgeführt.
Name des zu verändernden Systemparameters.
Defaultwert: 'init_new_image'
Werteliste: '3d_model_dir', 'alloctmp_max_blocksize', 'alloctmp_min_blocksize', 'avx2_enable', 'avx_enable', 'backing_store', 'border_shape_models', 'cancel_draw_result', 'clip_region', 'clock_mode', 'current_runlength_number', 'database', 'default_font', 'do_low_error', 'empty_region_result', 'example_dir', 'extern_alloc_funct', 'extern_free_funct', 'filename_encoding', 'flush_file', 'flush_graphic', 'global_mem_cache', 'graphic_stack_size', 'height', 'help_dir', 'icon_name', 'image_cache_capacity', 'image_dir', 'image_dpi', 'init_new_image', 'int2_bits', 'int_zooming', 'language', 'lut_dir', 'max_connection', 'mmx_enable', 'neighborhood', 'no_object_result', 'ocr_trainf_version', 'opengl_compatibility_mode_enable', 'opengl_context_cache_enable', 'opengl_hidden_surface_removal_enable', 'parallelize_operators', 'pregenerate_shape_models', 'reentrant', 'seed_rand', 'sse2_enable', 'sse3_enable', 'sse41_enable', 'sse42_enable', 'sse_enable', 'ssse3_enable', 'store_empty_region', 'temporary_mem_cache', 'temporary_mem_reservoir', 'temporary_mem_reservoir_size', 'thread_num', 'thread_pool', 'timer_mode', 'tsp_alloctmp_max_blocksize', 'tsp_alloctmp_min_blocksize', 'tsp_cancel_draw_result', 'tsp_clip_region', 'tsp_current_runlength_number', 'tsp_empty_region_result', 'tsp_height', 'tsp_init_new_image', 'tsp_neighborhood', 'tsp_no_object_result', 'tsp_store_empty_region', 'tsp_temporary_mem_cache', 'tsp_temporary_mem_reservoir', 'tsp_thread_num', 'tsp_width', 'update_lut', 'use_window_thread', 'width', 'x_package'
Neuer Wert des Systemparameters.
Defaultwert: 'true'
Wertevorschläge: 'true', 'false', 0, 4, 8
set_system liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Ansonsten wird eine Ausnahme ausgelöst.
reset_obj_db, get_system, set_check
get_system, set_check, count_seconds
Foundation
| Operatoren |