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'
Bestimmt die Genauigkeit mit der gewisse Schritte der Bildverarbeitung ausgeführt werden. Für 'true' wird Integer-Arithmetik oder schnelle Fließkommaarithmetik verwendet, für 'false' wird Fließkommaarithmetik mit hoher Genauigkeit verwendet. Weitere Informationen wie ein spezifischer Operator durch den Parameter 'int_zooming' beeinflusst wird, kann in der Dokumentation des direkt betroffenen Operators gefunden werden.
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
. Der Standardwert für die interne Bildbreite ist
512 in HDevelop (auch bei exportiertem Code), ansonsten
128.
Value
: Interne Bildbreite.
Default: 128 oder 512 (HDevelop)
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
. Der Standardwert für die interne Bildhöhe ist
512 in HDevelop (auch bei exportiertem Code), ansonsten
128.
Value
: Interne Bildhöhe.
Default: 128 oder 512 (HDevelop)
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 existiert nur aus Gründen der Rückwärtskompatibilität und sollte nicht mehr verwendet werden. Er bestimmt wie die HALCON Bibliothek intern Zeichenketten darstellt. Der Standard ist UTF-8, welches alle Zeichen des Unicode-Standards unterstützt.
Die Zeichenkodierung der Datacode-Leser, Datei-Handles, Sockets, Tupel-Operatoren, der HALCON/C++ Schnittstelle und der HALCON/C Schnittstelle ist unabhängig von diesem Parameter. Für alle kann UTF-8 oder das lokale 8-Bit-Encoding als Zeichenkodierung vewendet werden. Siehe dazu die entsprechende Dokumentation.
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. Erfordert eine eine ältere Anwendung weiterhin, dass die HALCON Bibliothek intern das lokale 8-Bit-Encoding verwendet, findet man Hinweise zum Legacy-Modus in den Technical Updates .
Value
: 'utf8' oder 'locale'
Default: 'utf8'
Seit HALCON 18.05 wird in allen proprietären HALCON-Dateien sowie beim
Serialisieren UTF-8 zum Kodieren von benutzerdefinierten Strings verwendet.
Das betrifft vor allem das Schreiben von HALCON-Tupeln als auch die
OCR- und OCV-Klassifikatoren, Trainingsdaten und Sample-Identifikatoren,
da diese vom Anwender definierte Klassen- bzw. Zeichennamen enthalten
können.
Dadurch wird der Austausch dieser Dateien zwischen unterschiedlichen
Betriebssystemen, Ländern und Spracheinstellungen deutlich vereinfacht.
Soll eine Datei mit Sonderzeichen allerdings auch in einer Anwendung
verwendet werden, die mit einer älteren HALCON-Version (vor HALCON 18.05)
gebaut wurde und sich auf das lokale Encoding der Strings verlässt, kann
mit Hilfe dieser Option das Schreiben mit dem lokalen Encoding erzwungen
werden.
Das ist nicht notwendig, wenn die zu schreibenden HALCON-Dateien nur reine
ASCII-Strings enthalten.
Außerdem gilt diese Option nur für proprietäre HALCON-Dateien, nicht jedoch
für Anwender-Dateien, die z.B. mit open_file
geöffnet werden.
Value
: 'locale' or 'utf8'
Default: 'utf8'
Ältere proprietäre HALCON-Dateien (vor HALCON 18.05) werden standardmäßig
mit dem lokalen System-Encoding gelesen.
Wurde stattdessen die einzulesende Datei bereits in UTF-8 geschrieben,
erlaubt diese Option das Encoding für das Lesen zu ändern.
Das betrifft vor allem das Lesen von HALCON-Tupeln als auch die
OCR- und OCV-Klassifikatoren, Trainingsdaten und Sample-Identifikatoren,
da diese vom Anwender definierte Klassen- bzw. Zeichennamen enthalten
können.
Dabei ist zu beachten, dass diese Option keinen Einfluss auf das Lesen von
neueren HALCON-Dateien (ab HALCON 18.05) hat und auch nicht angegeben
werden muss für Dateien, die nur reine ASCII-Strings enthalten.
Außerdem gilt diese Option nur für proprietäre HALCON-Dateien, nicht jedoch
für Anwender-Dateien, die z.B. mit open_file
geöffnet werden.
Value
: 'locale' or 'utf8'
Default: 'locale'
Dieser Parameter bestimmt, wie UTF-8 Strings durch Tupel-String-Operatoren,
wie tuple_ord
, tuple_strlen
oder tuple_substr
verarbeitet werden, wenn 'filename_encoding' auf den Wert
'utf8' gesetzt ist, welcher dem Defaultwert entspricht.
Standardmäßig werden Strings nicht byteweise, sondern zeichenweise bzw.
nach Unicode-Codepoints verarbeitet.
D.h. alle Zeichen, die aus einem einzelnen Unicode-Codepoint gebildet
werden, haben eine Stringlänge von 1, und der Zugriff auf das n-te Element
eines Strings gibt immer den Unicode-Codepoint des entsprechenden Zeichens
zurück, unabhängig davon, wieviel Bytes benötigt werden, um den Codepoint
oder die Codepoints davor in UTF-8 darzustellen.
Dieses Verhalten kann geändert werden, indem
'tuple_string_operator_mode' auf 'byte' gesetzt wird.
In diesem Modus werden Strings byteweise verarbeitet.
Value
: 'codepoint' or 'byte'
Default: 'codepoint'
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.
Kameramodellparameter (z.B. read_cam_par
)
werden im aktuellen Verzeichnis und im 'calib_dir' gesucht (sofern
keine absoluten Pfade angegeben werden). Man kann mehrere
Verzeichnisse angeben (Suchpfad), jeweils getrennt durch ein
Semikolon (Windows) bzw. einen Doppelpunkt (unixartige Systeme).
Value
: Name des Verzeichnisses.
Deep Learning Modelldaten (z.B. read_dl_model
)
werden im aktuellen Verzeichnis und im 'dl_dir' gesucht (sofern
keine absoluten Pfade angegeben werden). Man kann mehrere
Verzeichnisse angeben (Suchpfad), jeweils getrennt durch ein
Semikolon (Windows) bzw. einen Doppelpunkt (unixartige Systeme).
Value
: Name des Verzeichnisses.
Filterparameter (z.B. convol_image
)
werden im aktuellen Verzeichnis und im 'filter_dir' gesucht (sofern
keine absoluten Pfade angegeben werden). Man kann mehrere
Verzeichnisse angeben (Suchpfad), jeweils getrennt durch ein
Semikolon (Windows) bzw. einen Doppelpunkt (unixartige Systeme).
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 angeben (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 angeben (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.
OCR Klassifikatoren (z.B. read_ocr_class_knn
)
werden im aktuellen Verzeichnis und im 'ocr_dir' gesucht (sofern
keine absoluten Pfade angegeben werden). Man kann mehrere
Verzeichnisse angeben (Suchpfad), jeweils getrennt durch ein
Semikolon (Windows) bzw. einen Doppelpunkt (unixartige Systeme).
Value
: Name des Verzeichnisses.
Lizensierung:
Die Liste aller von HALCON gefundenen Lizenzdateien.
Ein Tupel mit Informationen zur aktuellen Lizenz. Ist keine gültige Lizenz vorhanden, besteht das Tupel aus einem einzigen Element mit dem Wert 'invalid' . Ansonsten enthält das Tupel folgende Elemente in dieser Reihenfolge:
Der Name der Lizenzdatei, aus der die aktuelle Lizenz gelesen wurde.
Die Art der Lizenz, entweder 'runtime' , 'development' , oder 'sasl' .
Die höchste Version von HALCON, die aktuell lizenziert ist.
Das Ablaufdatum der aktuellen Lizenz im ISO 8601 Format, oder der Wert 'permanent' für Lizenzen ohne Ablaufdatum.
Die Liste der lizenzierten HALCON-Module, getrennt mit ' | ' .
Die Anzahl der gleichzeitig nutzbaren Lizenzen, oder 0 für unbeschränkte Lizenzen.
Die Anzahl der gleichzeitig nutzbaren Sessions, oder 0 für eine unbegrenzte Anzahl von Sessions.
Die Host-ID, die für die aktuelle Lizenz verwendet wurde.
Die Flags der aktuellen Lizenz.
Der Inhalt des Informationsfeldes der Lizenz.
Wenn eine bestimmte Information zur Lizenz nicht verfügbar ist, wird statt dessen ein leerer String zurückgegeben.
Das Ablaufdatum der aktuellen Lizenz im ISO 8601 format, oder der Wert 'permanent' for Lizenzen ohne Ablaufdatum.
Die Anzahl der fehlgeschlagenen Lizenzversuche seit Prozessstart.
Dieser Parameter löst eine sofortige Lizenzprüfung aus und gibt 'true' zurück, falls eine gültige Lizenz gefunden wurde, ansonsten 'false' .
Die Host-ID, die für die aktuelle Lizenz verwendet wurde.
Die Liste aller aktuell lizenzierter Module.
Die maximale Version von HALCON, die aktuelle lizenziert ist.
Eine Liste aller HALCON-Operatoren, die nicht ausgeführt werden können, weil das benötigte Modul nicht lizenziert ist.
Andere:
Die Liste aller von get_system
unterstützten Parametern.
Mit diesem Parameter können einzelne HALCON-Operatoren deaktiviert werden.
Dies kann sinnvoll sein, wenn ein Programm Benutzer-definierte
HDevelop-Skripten ausführen kann, aber aus Sicherheitsgründen verhindert
werden soll, dass bestimmte Operatoren wie z.B. system_call
ausgeführt werden können. Jeder Versuch, einen deaktivierten Operator
auszuführen, liefert den Fehler H_ERR_OP_DISABLED (9055) zurück. Es ist zu
beachten, dass ein einmal deaktivierter Operator während der Restlaufzeit des
aktuellen Prozesses nicht wieder aktiviert werden kann.
Der Wert für diesen Parameter ist ein Tuple, das die Namen aller zu deaktivierenden Operatoren enthält.
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. Die Zeichenkodierung der Fehlermeldung entspricht der Zeichenkodierung der HALCON Bibliothek wie sie mit 'filename_encoding' bestimmt ist.
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, ob die cuDNN-Bibliothek für Deep Learning deterministische Algorithmen benutzt, um bitweise Reproduzierbarkeit über verschiedene Architekturen hinweg zu garantieren. Beachten Sie, dass die Verwendung von deterministischen Algorithmen auf manchen Architekturen zur Verlangsamung der Berechnungen führen kann.
Value
: 'true' oder 'false'
Default: 'false'
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'
Bestimmt, ob AVX512F-Operationen zur Beschleunigung ausgewählter
Bildverarbeitungs-Operatoren verwendet werden sollen ('true' )
oder nicht ('false' ). (Ohne Effekt, falls
'avx512f_supported' == 'false' , siehe hierzu Operator
get_system
)
Value
: 'true' oder 'false'
Default: 'true' , falls die CPU AVX512F unterstützt, sonst 'false'
Bestimmt, ob AVX512DQ-Operationen zur Beschleunigung ausgewählter
Bildverarbeitungs-Operatoren verwendet werden sollen ('true' )
oder nicht ('false' ). (Ohne Effekt, falls
'avx512dq_supported' == 'false' , siehe hierzu Operator
get_system
)
Value
: 'true' oder 'false'
Default: 'true' , falls die CPU AVX512DQ unterstützt, sonst 'false'
Bestimmt, ob AVX512BW-Operationen zur Beschleunigung ausgewählter
Bildverarbeitungs-Operatoren verwendet werden sollen ('true' )
oder nicht ('false' ). (Ohne Effekt, falls
'avx512bw_supported' == 'false' , siehe hierzu Operator
get_system
)
Value
: 'true' oder 'false'
Default: 'true' , falls die CPU AVX512BW unterstützt, sonst 'false'
Bestimmt, ob AVX512ER-Operationen zur Beschleunigung ausgewählter
Bildverarbeitungs-Operatoren verwendet werden sollen ('true' )
oder nicht ('false' ). (Ohne Effekt, falls
'avx512er_supported' == 'false' , siehe hierzu Operator
get_system
)
Value
: 'true' oder 'false'
Default: 'true' , falls die CPU AVX512ER unterstützt, sonst 'false'
Bestimmt, ob AVX512CD-Operationen zur Beschleunigung ausgewählter
Bildverarbeitungs-Operatoren verwendet werden sollen ('true' )
oder nicht ('false' ). (Ohne Effekt, falls
'avx512cd_supported' == 'false' , siehe hierzu Operator
get_system
)
Value
: 'true' oder 'false'
Default: 'true' , falls die CPU AVX512CD unterstützt, sonst 'false'
Sprache, in der die Fehlermeldungen ausgegeben werden.
Value
: 'english' oder 'german' .
Default: 'english'
Setzt bzw. entfernt eine Callback-Funktion zum Anzeigen von Operatorforschritt und -nachrichten. Die Callback-Funktion wird von Operatoren, die dies unterstützten, in unregelmäßigen Abständen aufgerufen um den Fortschritt oder eine Nachricht anzuzeigen.
Die Signatur der Callback-Funktion ist void HProgressBarCallback(Hlong id, const char *operator_name, double progress, const char *message) Auf Windows 32-Bit-Systemen wird die __stdcall Namenskonvention verwendet: void (__stdcall HProgressBarCallback)(Hlong id, const char *operator_name, double progress, const char *message)
Ein entsprechender Delegate HalconAPI.HProgressBarCallback ist für
HALCON/.NET definiert und kann via Marshal.GetFunctionPointerForDelegate
an set_system
übergeben werden. Die Instanz muss dann am Leben
gehalten werden solange der Zeiger in Benutzung bleibt.
public delegate void HProgressBarCallback(IntPtr id, string operatorName, double progress, string message)
Die Parameter sind:
'id' : Thread-ID, aus der der Operator ursprünglich aufgerufen wurde. Wenn die automatische Operatorparallelisierung aktiviert ist, kann der Callback auch aus einem anderem als dem ursprünglichen Thread erfolgen. Applikationen, die den Fortschritt in der GUI anzeigen wollen, müssen dies evtl. beachten.
'operator_name' : Name des gerade ausgeführen Operators.
'progress' : Die Interpretation hängt vom Wert des Parameters ab. Zwischen 0 und 1: Der ungefähre derzeitige Fortschritt des Operators. -1: Der Operator zeigt lediglich eine Nachricht an und setzt keinen Fortschritt, der Parameter sollte ignoriert werden. -2: Die Ausführung des Operators wurde abgeschlossen. Dies ist der letzte Callback-Aufruf für den Operator und eine Möglichkeit für den aufgerufenen, Aufräumaktionen durchzuführen. Dieser Aufruf wird nur für Operatoren durchgeführt, die den Callback mindestens einmal aufgerufen haben.
'message' : Optionale Nachricht auf Englisch, die üblicherweise den Fortschritt des Operators beschreibt, beispielsweise den aktuellen Fehler beim Trainieren von Klassifikatoren. Wenn der Operator keine Nachricht anzeigen möchte, kann dieser Parameter auf NULL gesetzt sein.
Flag zum Aktivieren oder Deaktivieren des Legacy Handle Modus.
Wenn aktiviert, werden alle von HALCON-Operatoren zurückgegebenen
Handles in Ganzzahlen konvertiert und alle Operatoren, die Handles
erwarten, akzeptieren auch Ganzzahlen.
In diesem Fall werden Handles nicht mehr automatisch freigegeben, wenn
alle Tupel, in denen sie enthalten sind, überschrieben oder gelöscht
wurden. Stattdessen muss clear_handle
oder der
clear-Operator des entsprechenden Handle-Typs aufgerufen werden.
Der Legacy Handle Mode ist nur zum Ausführen von Legacy-Code gedacht. Es wird nicht empfohlen, den Modus in neuem Code zu aktivieren. Bei aktiviertem Legacy Handle Modus funktionieren neuere Sprachfeatures oder Operatoren unter Umständen nicht mehr.
Value
: 'true' or 'false'
Default: 'false'
Die Edition von HALCON, entweder 'progress' , 'steady' , oder 'student' .
Der HALCON Editionsname. Ist entweder 'Progress' , 'Steady' , 'Steady Deep Learning' , oder 'Student Edition' .
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.
SystemParameter
(input_control) attribute.name(-array) →
(string)
Name des zu verändernden Systemparameters.
Defaultwert: 'init_new_image'
Werteliste: '3d_model_dir' , 'add_progress_callback' , 'alloctmp_max_blocksize' , 'alloctmp_min_blocksize' , 'avx2_enable' , 'avx512bw_enable' , 'avx512cd_enable' , 'avx512dq_enable' , 'avx512er_enable' , 'avx512f_enable' , 'avx_enable' , 'backing_store' , 'border_shape_models' , 'calib_dir' , 'cancel_draw_result' , 'clip_region' , 'clock_mode' , 'cudnn_deterministic' , 'current_runlength_number' , 'database' , 'default_font' , 'disabled_operators' , 'dl_dir' , 'do_low_error' , 'empty_region_result' , 'example_dir' , 'extern_alloc_funct' , 'extern_free_funct' , 'filename_encoding' , 'filter_dir' , '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' , 'legacy_handle_mode' , 'lut_dir' , 'max_connection' , 'mmx_enable' , 'neighborhood' , 'no_object_result' , 'ocr_dir' , 'ocr_trainf_version' , 'opengl_compatibility_mode_enable' , 'opengl_context_cache_enable' , 'opengl_hidden_surface_removal_enable' , 'parallelize_operators' , 'pregenerate_shape_models' , 'read_halcon_files_encoding_fallback' , 'reentrant' , 'remove_progress_callback' , '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_legacy_handle_mode' , 'tsp_neighborhood' , 'tsp_no_object_result' , 'tsp_store_empty_region' , 'tsp_temporary_mem_cache' , 'tsp_temporary_mem_reservoir' , 'tsp_thread_num' , 'tsp_tuple_string_operator_mode' , 'tsp_width' , 'tuple_string_operator_mode' , 'update_lut' , 'use_window_thread' , 'width' , 'write_halcon_files_encoding' , 'x_package'
Value
(input_control) attribute.value(-array) →
(string / integer / real)
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