Bilder speichern

Bilder können in VisionPro mit dem CogImageFileTool gespeichert werden. Damit sind aber einige Nachteile verbunden:

  • Die Zeit für das Speichern geht in die gesamte Laufzeit ein.

  • Wenn Bilder nicht gespeichert werden können geht der Job auf „Fehler“ (kann nur über Scripting anders behandelt werden).

  • Muss für jeden Job konfiguriert werden.

  • Bilder sollen nicht gespeichert immer werden, z.B. wenn sie zu Analysezwecken von der Festplatte geladen wurden.

Aus diesen und weiteren Gründen werden Bilder in Viper.NET automatisch gespeichert. Dabei wird zwischen den beiden Bilderarten Eingangsbild und Ergebnisbild unterschieden, die jeweils verschieden behandelt werden. Bilder werden mit der Komponente WorkerStoreImage asynchron gespeichert, um die Laufzeiten der Jobs nicht durch langsame Festplattenzugriffe oder nicht erreichbare Netzlaufwerke auszubremsen.

Konfiguration

Welche Bilder wohin gespeichert werden sollen, hängt von mehreren Faktoren ab:

  • Der Standard für alle Jobs wird in den Globale Einstellungen konfiguriert.

  • Viele dieser globalen Einstellungen können für einen einzelnen Job im Job-Editor überschrieben werden.

  • Über den JobDataBlock gibt es außerdem die Möglichkeit, die Optionen in jeder Ausführung des Jobs zu beeinflussen.

  • Analog gibt es im SaveImagesEx ToolBlock Terminals für die Speicheroptionen eines Ergebnisbilds.

Eingangsbilder (Kamerabilder)

Die Eingangsbilder, also die Rohbilder der Kamera, werden vor dem Durchlaufen der Manipulations-ToolGroup abgehoben und 1:1 gespeichert. Der Dateiname wird automatisch so generiert, dass die Bilder später in RunFromDir geladen und den jeweiligen Bildquellen zugeordnet werden können:

{Job.TgItem}#{TimeStamp}#{ResultTag}#{ImageIdx}.bmp
  • Job.TgItem: Name des Jobs (nicht der DisplayName) und Name des ToolGroupItems

  • TimeStamp: Zeitstempel im Format „yyyyMMdd_HHmmssfff“

  • ResultTag: Ergebnis des Bewertung („pass“, „warn“ oder „fail“)

  • ImageIdx: Index der Bildquelle in der Bildquellenliste, von der das Bild stammt, z.B. „Img0“.

Optional kann der Bildername weitere Elemente enthalten:

{Prefix}#{Job.TgItem}#{TimeStamp}#{ResultTag}#{ImageIdx}{Category}.bmp
  • Prefix: Kann im JobDataBlock gesetzt werden, z.B. auf die Bauteil-ID.

  • Category: Bildquellentyp, wenn Erweiterungsbildquellen aus Plugins verwendet werden (z.B. im Halcon-Plugin)

Die Bilder werden normalerweise direkt in den Bilderordner gespeichert. Mit dem JobDataBlock kann optional auch eine Unterordner-Struktur definiert werden.

Warnung

Das Bildformat JPEG speichert Bilder komprimiert, aber verlustbehaftet. Eine spätere erneute Auswertung der Bilder kann deshalb zu veränderten Ergebnissen führen. Für das komprimierte Speichern von Eingangsbildern sollte PNG verwendet werden.

Hinweis

Das Bildformat bei CogImage16Range ist immer IDB, unabhängig von der Konfiguration.

Ergebnisbilder (SaveImagesEx)

Ergebnisbilder werden mit Hilfe spezieller Toolblöcke gespeichert. Weitere Details sind in Kapitel SaveImagesEx beschrieben.

WorkerStoreImage

Die zu speichernden Bilder werden im Normalfall in eine Warteschlange eingetragen und von der Komponente WorkerStoreImage asynchron gespeichert. In der Konfiguration des Vision-Plugins kann das Verhalten von WorkerStoreImage mit einigen Parametern angepasst werden. Nach Änderung der Parameter ist ein Neustart erforderlich.

Warnung

Fehler beim Speichern der Bilder werden geloggt, ohne dass die Anwendung auf Störung geht. Bilder sollten daher immer auf lokale Ordner zwischengespeichert werden, da Netzlaufwerke nicht immer erreichbar sind. Mit WatchDir können die Dateien anschließend auf Netzlaufwerke verschoben werden.

Speicherplatzbegrenzung

Der Zielordner für die Bilder wird von Viper.NET nicht überwacht, d.h. es werden Bilder gespeichert bis kein Platz mehr verfügbar ist. Deshalb wird bei der Installation von Viper.NET das Tool Gefasoft WatchDir zur Überwachung von Ordnern und Dateien installiert. Der WatchDir läuft als Windows-Dienst und wird über ein separates Tool konfiguriert. Das Tool kann über Plugins erweitert werden, z.B. um Daten an externe Schnittstellen wie MQTT oder AMQP zu senden.

Standardmäßig bietet WatchDir folgende Funktionen:

  • Begrenzung von Verzeichnissen auf eine maximale Anzahl Dateien, Ordner oder Gesamtgröße, wobei immer die ältesten Dateien gelöscht werden.

  • Verschieben von Dateien in ein oder mehrere Zielordner.

Für WatchDir ist eine separate Dokumentation innerhalb verfügbar, die ebenfalls mitinstalliert wird.

Warnung

Der Bilderordner von Viper.NET sollte immer überwacht werden.