Anleitung: Eine Bauteilkennzeichnung aus einem Kamerabild lesen
Eine gedruckte Teilenummer aus einem Kamerabild lesen, von einer frischen Installation bis zu einer Einstellung, die Sie in die Produktion nehmen können.
Das Beispiel ist eine sechsstellige Teilenummer, auf ein Etikett gedruckt. Passen Sie Zeichensatz und Layout unterwegs an Ihre Kennzeichnung an.
Bevor Sie beginnen
-
LumiScan Cam Driver oder eine andere Bildquelle, die auf demselben Gerät läuft - derselben ctrlX CORE oder demselben ctrlX IPC oder demselben PC - und Bilder liefert.
-
Die Adresse ihres Bildknotens zur Hand, z. B.
hdvisionsystems/lumiscan-cam-driver/camera1/output/image. -
Ein Teil vor der Kamera, mit der Kennzeichnung im Bild, im Fokus und gut beleuchtet.
1. Den Leser auf die Kamera richten
write hdvisionsystems/lumiscan-text-reader/module-1/read-text/input/input-image-address
= "hdvisionsystems/lumiscan-cam-driver/camera1/output/image"
2. Einen ersten Lesevorgang durchführen
Lassen Sie alles andere auf dem Standardwert und führen Sie ihn aus:
write .../module-1/read-text/execute read .../module-1/read-text/output/status-code -> 1 read .../module-1/read-text/output/status-text read .../module-1/read-text/output/result
Ein negativer Statuscode bedeutet, dass er nicht gelaufen ist - status-text nennt den Grund. -3
ist fast immer eine falsche Bildadresse.
An diesem Punkt ist das Leseergebnis meist schlecht: zu viele Wörter, manche davon Unsinn aus dem Hintergrund. Das ist zu erwarten, und die nächsten drei Schritte beheben es.
3. Auf die Kennzeichnung zuschneiden
Ermitteln Sie die Pixelkoordinaten des Etiketts im Bild - auf ctrlX OS zeigt die ctrlX-Kameraansicht sie an - und setzen Sie eine Region, die etwas größer ist als der Text:
write .../input/crop/startX = 620 write .../input/crop/startY = 310 write .../input/crop/width = 260 write .../input/crop/height = 90
Führen Sie es erneut aus. Die meisten Störwörter sollten verschwunden sein.
|
Dieser Schritt hilft am meisten, und er macht auch jeden Lesevorgang schneller. Kann sich das Teil zwischen den Zyklen verschieben, machen Sie den Ausschnitt groß genug, um den gesamten Bereich abzudecken, den es einnehmen kann - eine Kennzeichnung, die aus dem Ausschnitt herauswandert, wird als nichts gelesen, was ein besserer Fehler ist, als etwas Falsches zu lesen. |
4. Den Zeichensatz einschränken
Eine sechsstellige Teilenummer enthält nur Ziffern, also sagen Sie das:
write .../input/characters/mode = "DIGITS"
Das verhindert, dass 0 als O und 5 als S gelesen wird. Enthält die Nummer auch Buchstaben,
verwenden Sie stattdessen UPPERCASE_LETTERS mit allow = "0123456789", oder CUSTOM mit allow
auf genau die Zeichen gesetzt, die Ihre Kennzeichnung enthalten kann.
5. Sagen, was betrachtet wird
Eine Druckzeile in einem engen Ausschnitt:
write .../input/layout = "SINGLE_LINE"
Führen Sie es erneut aus. output/result.text sollte jetzt die Teilenummer sein und sonst nichts.
6. Einen Konfidenz-Schwellwert wählen
Lassen Sie fünf oder zehn bekannt gute Teile durchlaufen und notieren Sie mean_score aus jedem
Ergebnis sowie die einzelnen words[].score.
Korrekte Leseergebnisse auf einem ordentlichen Bild liegen deutlich über 0.8. Setzen Sie den Schwellwert
unter Ihr schlechtestes bekannt gutes Leseergebnis und über das Rauschen:
write .../input/min-score = 0.7
|
|
7. Die Einstellungen speichern
Nichts von dem oben überlebt einen Neustart, bis Sie es speichern:
write hdvisionsystems/lumiscan-text-reader/system/save-module-inputs/input/module-id = "module-1" write hdvisionsystems/lumiscan-text-reader/system/save-module-inputs/execute
8. In das Steuerungsprogramm einbinden
Pro Zyklus:
-
Schreiben Sie
read-text/execute- ein blockierender Aufruf, es gibt also kein Ready-Flag zu pollen. -
Prüfen Sie
output/status-code. Negativ bedeutet, dass der Lesevorgang fehlgeschlagen ist und nichts erzeugt hat. -
Lesen Sie
output/result. -
Prüfen Sie, ob
word_count1 ist undwords[0].scoreakzeptabel, und vergleichen Sie dannwords[0].textmit der erwarteten Teilenummer.
Lesen Sie das Ergebnis, bevor Sie den nächsten Lesevorgang auslösen: Das nächste execute leert es.
Fehlerbehebung
Die Probleme, die beim Einrichten eines Lesevorgangs auftreten können, sind Schritt für Schritt unter Fehlerbehebung beschrieben:
-
Das Leseergebnis ist leer, obwohl der Text in einem Farbbild deutlich sichtbar ist
-
Ziffern werden als Buchstaben gelesen (O statt 0, S statt 5)
-
Das Leseergebnis enthält zusätzliche Wörter aus dem Hintergrund
-
Der Text wird in einer anderen Sprache als input/language gelesen
-
Nadeldruck- oder lasergravierte Kennzeichnung wird schlecht gelesen