Hallo Leute,
@Skino hatte hier das Problem, Ziffern einer 7-Segment-Anzeige zu erkennen:
Noch mal OCR, aber nur Zahlen
Auf GitHub fand ich folgende Lösung: github.com/FANMixco/7-segment-ocr-reader
Als ich mich näher mit dieser Lösung befasste, fand ich mehrere Unzulänglichkeiten, ich vermute mal, dass nicht der ganze Code getestet und verstanden wurde.
Ich nahm mich dieses Algorithmus' an und habe ihn so weit optimiert,
dass alle im Thread geposteten Bilder sauber erkannt werden.
Voraussetzung für eine erfolgreiche OCR ist das Vorliegen eines diskreten Mono-Bildes mit schwarzen Ziffern auf weißem Grund.
Der wichtigste Punkt hier ist, dass ein Farbbild zunächst in ein zunächst sorgfältig in ein diskretes Mono-Bild konvertiert werden muss.
Dazu ist üblicherweise noch etwas Bildverarbeitung erforderlich, die hier nicht Gegenstand der Untersuchung ist.
Die Reihenfolge sollte sein:
Alle Prozeduren sind kommentiert, wichtige Passagen im Code ebenfalls.
Den englischen Original-Kommentar habe ich unverändert stehen gelassen.
Was noch zu tun wäre:
In der OCR-Klasse sollte nicht auf einer Bitmap, sondern auf einem Byte-Array gearbeitet werden.
Das ist auch für eine flüssige Bildverarbeitung erforderlich.
Zur Entwicklung habe ich die betreffenden Bilder den Ressourcen des Programms hinzugefügt.
Das Einlesen externer Bilder aus einer Datei oder der Zwischenablage sollte für den geübten Programmierer kein Problem darstellen.
Im linken Bild wird das Originalbild und der gelesene Text dargestellt,
im rechten Bild wird das entsprechend der Controls vorverarbeitete Bild und der gelesene Text dargestellt.
SiebenSegmentOcrCs.zip
SiebenSegmentOcrVb.zip
Viel vergnügen
@Skino hatte hier das Problem, Ziffern einer 7-Segment-Anzeige zu erkennen:
Noch mal OCR, aber nur Zahlen
Auf GitHub fand ich folgende Lösung: github.com/FANMixco/7-segment-ocr-reader
Als ich mich näher mit dieser Lösung befasste, fand ich mehrere Unzulänglichkeiten, ich vermute mal, dass nicht der ganze Code getestet und verstanden wurde.
Ich nahm mich dieses Algorithmus' an und habe ihn so weit optimiert,
dass alle im Thread geposteten Bilder sauber erkannt werden.
Voraussetzung für eine erfolgreiche OCR ist das Vorliegen eines diskreten Mono-Bildes mit schwarzen Ziffern auf weißem Grund.
Der wichtigste Punkt hier ist, dass ein Farbbild zunächst in ein zunächst sorgfältig in ein diskretes Mono-Bild konvertiert werden muss.
Dazu ist üblicherweise noch etwas Bildverarbeitung erforderlich, die hier nicht Gegenstand der Untersuchung ist.
Die Reihenfolge sollte sein:
- Beschneidung des Bildbereiches
- Konvertierung in ein Grau-Bild
- Medianfilter
- ggf. Schwarz-Weiß-Invertierung
- Opening und Closing
- Diskretisierung
- Kantenbeschneidung
- Schwarz-Weiß-Invertierung
- Konvertierung in ein Grau-Bild mit links und rechts unterschiedlichen Werten und linearer Interpolation dazwischen
Alle Prozeduren sind kommentiert, wichtige Passagen im Code ebenfalls.
Den englischen Original-Kommentar habe ich unverändert stehen gelassen.
Was noch zu tun wäre:
In der OCR-Klasse sollte nicht auf einer Bitmap, sondern auf einem Byte-Array gearbeitet werden.
Das ist auch für eine flüssige Bildverarbeitung erforderlich.
Zur Entwicklung habe ich die betreffenden Bilder den Ressourcen des Programms hinzugefügt.
Das Einlesen externer Bilder aus einer Datei oder der Zwischenablage sollte für den geübten Programmierer kein Problem darstellen.
Im linken Bild wird das Originalbild und der gelesene Text dargestellt,
im rechten Bild wird das entsprechend der Controls vorverarbeitete Bild und der gelesene Text dargestellt.
SiebenSegmentOcrCs.zip
SiebenSegmentOcrVb.zip
Viel vergnügen
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ () aus folgendem Grund: VB-Projekt angehängt