Anleitung: Einen Data-Matrix-Code aus einem Kamerabild lesen

Diese Anleitung liest mit LumiScan DMC Reader die Data-Matrix-Codes in einem Bild von LumiScan Cam Driver und zeigt, wo der dekodierte Text und die Position stehen.

Am Ende liest ein Schreibzugriff auf die Methode execute des Lesers jeden Data-Matrix-Code im aktuellen Kamerabild.

Dieselben Schritte gelten für LumiScan QR Code Reader, LumiScan Aztec Code Reader und LumiScan Barcode Reader: Ersetzen Sie lumiscan-dmc-reader in den Adressen durch den Namen dieser Anwendung.

Bevor Sie beginnen

  • LumiScan DMC Reader und LumiScan Cam Driver laufen auf demselben Gerät - derselben ctrlX CORE oder demselben ctrlX IPC oder demselben PC. Ein Bild von einem anderen Gerät zu lesen wird nicht unterstützt.

  • Das Kameramodul von LumiScan Cam Driver ist verbunden und kann Bilder aufnehmen.

  • Optional: LumiScan Cockpit, um die Codes auf dem Bild zu sehen.

Ohne Kamera verwenden Sie eine simulierte Kamera von LumiScan Cam Driver mit Beispielbildern, zum Beispiel dem Bild unten. Siehe LumiScan Cam Driver: Wie funktioniert der Simulationsmodus?.
Auf Papier gedruckter Data-Matrix-Code vor einer gelochten Metallplatte
Abbildung 1. Beispielbild mit einem Data-Matrix-Code

Wie es zusammenhängt

LumiScan DMC Reader braucht keine Vorlage und keine Konfiguration. Er liest den Bildknoten, dessen Adresse Sie ihm geben, durchsucht das ganze Bild nach Data-Matrix-Codes nach ECC 200 und schreibt jeden gefundenen Code nach output/results.

Alle Adressen unten sind relativ zu hdvisionsystems/lumiscan-dmc-reader. Auf ctrlX OS setzen Sie Werte in der ctrlX-Weboberfläche unter Settings > Data Layer oder aus einer anderen Anwendung, zum Beispiel einem SPS-Programm.

Schritt 1 - Den Leser auf das Kamerabild richten

Schreiben Sie die Adresse des Bildknotens der Kamera nach input/image-address. Für das Kameramodul camera1:

hdvisionsystems/lumiscan-cam-driver/camera1/output/image

Verwenden Sie die Adresse des Bildknotens selbst, nicht die seines Unterknotens data. Die Adresse bleibt erhalten; Sie setzen sie nur neu, wenn sich die Bildquelle ändert.

Schritt 2 - Ein Bild aufnehmen

Nehmen Sie mit LumiScan Cam Driver ein Bild auf, zum Beispiel mit einem Schreibzugriff auf hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute.

Für ein sicheres Lesen sollte der Code scharf und kontrastreich sein, und seine Module - die schwarzen und weißen Quadrate - sollten im Bild mehrere Pixel breit sein.

Schritt 3 - Die Codes lesen

Schreiben Sie einen leeren Wert auf execute.

Der Aufruf kehrt zurück, wenn die Suche beendet ist.

Schritt 4 - Das Ergebnis prüfen

Lesen Sie output/results. Es enthält einen Eintrag je gefundenem Code:

  • text - der dekodierte Inhalt,

  • center - der Mittelpunkt des Codes im Bild, in Pixeln,

  • score - wie sicher die Lesung ist,

  • polygons - die Eckpunkte des Codes, falls angegeben.

Eine leere Liste bedeutet: Das Bild wurde gelesen und enthielt keinen Data-Matrix-Code. Die Felder sind in Das Ergebnis beschrieben.

Ein fehlgeschlagener Lauf - zum Beispiel bei falscher Bildadresse oder nicht lesbarem Bild - lässt output/results unverändert, mit den Codes des vorigen Laufs. Der Grund steht im Anwendungsprotokoll. Muss Ihr Programm wissen, ob das Ergebnis neu ist, vergleichen Sie das Ergebnis vor und nach dem Lauf oder prüfen Sie das Protokoll.

Um die Codes auf dem Bild zu sehen, öffnen Sie LumiScan Cockpit und wählen die Ansicht datamatrix-code von lumiscan-dmc-reader. Jeder Code ist umrahmt und mit Text und Score beschriftet.

Ergebnis

  • LumiScan DMC Reader liest das aktuelle Bild der Kamera.

  • Ein Schreibzugriff auf execute liest jeden Data-Matrix-Code im Bild.

  • Der dekodierte Text und die Position jedes Codes stehen in output/results.

In der Produktion ist ein Zyklus: mit LumiScan Cam Driver aufnehmen, auf execute des Lesers schreiben, output/results lesen. Um jedes Bild eines Kamerastreams ohne Aufruf je Bild lesen zu lassen, siehe Codes in einem Bildstream lesen (experimentell). Probleme sind in Fehlerbehebung beschrieben.