Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
[2.0] String (Zahl) in Image finden?
spacer
Autor Nachricht
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

Beiträge: 307
Erhaltene Danke: 1
Dabei seit: 20.09.2008



VS2005 Standard / C# & VB.Net
BeitragVerfasst: Sa 13.02.10 15:59 
.NET Version: 2.0
Antworten mit Zitat Beitrag melden
Hallo zusammen,

ich suche eine Möglichkeit, eine Zahl mit dessen Position in einem Image zu finden. Bei der Internetrecherche bin ich auf diverse, kostenpflichtige OCR (Optical Character Recognition) Tools gestolpert. Diese konnten Text in Images zwar in einen String umwandeln, jedoch musste die Position des Textes bekannt sein. In meinem Fall variiert die Position des Textes jedoch. Daher suche ich eine Methode, die Zahlen in einem Image finden kann und dessen Position zurückgibt.

Hat hier jemand eine Idee, wie ich das realisieren könnte?

_________________
Gruß
Christoph
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 900
Erhaltene Danke: 14
Dabei seit: 28.01.2009
Wohnort: Stuttgart

Windows XP
C# (VS 2008)
BeitragVerfasst: So 14.02.10 14:49  Antworten mit Zitat Beitrag melden
Hallo,

da kannst einfach sequentiell alle Bereiche eines Bildes absuchen und bei einem sinnvollen Ergebnis die Position zurück geben. Ob das nun die Library für dich macht oder du selbst ist ja egal.

Gruß Daniel
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

(Threadstarter)

Beiträge: 307
Erhaltene Danke: 1
Dabei seit: 20.09.2008



VS2005 Standard / C# & VB.Net
BeitragVerfasst: So 14.02.10 15:32  Antworten mit Zitat Beitrag melden
Hi,

nur wie kommt ein gutes Resultat zustande? Das Thema ist ziemlich kompliziert. Hier gibt es ein Beispiel, nur kommt es mit Zahlen nicht zurecht. Bei Pennergame gibt es C Code der das erledigen kann, nur kann ich das leider nicht in C# übersetzten.

_________________
Gruß
Christoph
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 900
Erhaltene Danke: 14
Dabei seit: 28.01.2009
Wohnort: Stuttgart

Windows XP
C# (VS 2008)
BeitragVerfasst: So 14.02.10 15:43  Antworten mit Zitat Beitrag melden
Also ist es nicht dein Problem die Position der Zahl zu finden, sondern die Zahl einwandfrei zu erkennen? Das ist natürlich schwieriger... aber auch abhängig von deiner Quelle. Wenn du ein "saubere" Quelle hast und du nur Zahlen suchst gibt es frei OCR-Egines die eine DB verwenden und somit ein 100% Ergebniss erzielen.
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

(Threadstarter)

Beiträge: 307
Erhaltene Danke: 1
Dabei seit: 20.09.2008



VS2005 Standard / C# & VB.Net
BeitragVerfasst: So 14.02.10 15:56  Antworten mit Zitat Beitrag melden
Ich benötige die Position und ein genaues Ergebnis. Erst muss eine Zahl identifiziert werden, dann beötige ich diese und dessen Position, damit ich an der entsprechenden Stelle weitere Informationen einfügen kann. In der Grafik können bis zu 15 Zahlen stehen.

_________________
Gruß
Christoph
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Breakdowncookie
Hält's aus hier

Beiträge: 6
Dabei seit: 12.02.2010



BeitragVerfasst: Mo 15.02.10 17:02  Antworten mit Zitat Beitrag melden
Wie sehen diese Zahlen denn aus? Sind sie immer in der gleichen Schriftart und -größe oder sind sie gar rotiert? Ist das Bild eingescannt oder am PC erstellt? Wenn sie ganz normal in einem bekannten Font zur Verfügung stehen, wäre das gut, dann kannst du die einfach Pixel per Pixel abgleichen.
Private Nachricht sendenPosting in privater Nachricht zitieren
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

(Threadstarter)

Beiträge: 307
Erhaltene Danke: 1
Dabei seit: 20.09.2008



VS2005 Standard / C# & VB.Net
BeitragVerfasst: Mo 15.02.10 17:40  Antworten mit Zitat Beitrag melden
Hi,

ist immer die selbe Schriftart und Größe, die Ausrichtung ist immer vertikal. Das Image wurde am PC erstellt.

Aber was soll ich denn Pixel per Pixel abgleichen???? Das ganze ist leider nicht so einfach wie man meinen könnte.

_________________
Gruß
Christoph
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 900
Erhaltene Danke: 14
Dabei seit: 28.01.2009
Wohnort: Stuttgart

Windows XP
C# (VS 2008)
BeitragVerfasst: Mo 15.02.10 17:45  Antworten mit Zitat Beitrag melden
Doch ist es, wenn es am PC gemacht wurde und immer die gleiche Schriftart etc. ist, dann kannst du a) Schablonen von jeden einzelnen Zahl erstellen b) diese Schablonen Postion um Position mit dem aktuellen Bild vergleichen. Worin liegt den deines Erachtens noch das Problem?
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Breakdowncookie
Hält's aus hier

Beiträge: 6
Dabei seit: 12.02.2010



BeitragVerfasst: Mo 15.02.10 17:49  Antworten mit Zitat Beitrag melden
Ich stell mir das folgender Maßen vor:
Da bestimmt ein gewisser Abstand zwischen den Zahlen ist (min. 1 Pixel), lassen sich diese eingrenzen.
Dazu scannst du mit 2 For-Schleifen (for y ... for x ...) durch das Bild und suchst etwas, das von der Hintergrundfarbe abweicht. (Oder wie sieht der Hintergrund aus?) Wenn du etwas gefunden hast, grenzt du es von oben, unten, links und rechts ein und vergleichst das Resultat Pixel für Pixel (wieder 2 For-Schleifen) mit vorher erstellten Images der 10 möglichen Ziffern.
Feddisch.
Private Nachricht sendenPosting in privater Nachricht zitieren
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

(Threadstarter)

Beiträge: 307
Erhaltene Danke: 1
Dabei seit: 20.09.2008



VS2005 Standard / C# & VB.Net
BeitragVerfasst: Mo 15.02.10 18:02  Antworten mit Zitat Beitrag melden
Das könnte gehen, sellt sich nur die Frage, wie Performant das wird. Hast du schon mal ein Image von oben bis unten mit einer Schleife durchlaufen? Da kann man erstmal Kaffeetrinken gehen. Aber mit einer Eingrenzung sollte es auch möglich sein, da die Zahlen eigentlich immer mind. vier Stellen haben. Schade nur, das man bei deinem Vorschlag nicht ohne teachen auskommt. Aber gut, das ist an Projekt für das Wochenende (bzw. die nächsten :gruebel: ), mit einer Flasche Wein :zustimm:

_________________
Gruß
Christoph
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 900
Erhaltene Danke: 14
Dabei seit: 28.01.2009
Wohnort: Stuttgart

Windows XP
C# (VS 2008)
BeitragVerfasst: Mo 15.02.10 18:05  Antworten mit Zitat Beitrag melden
Also das teachen brauchst du nicht, weil die Zahlen ja immer genau so aussehen. Von der Performance her ist es unkritisch. Ich hab schon Mal was ähnliches gemacht. Für die Pixel/Pixel vergleiche kannst du unmanaged Code nehmen. Aber Schritt für Schritt...

Fürs erste würde ich einmal die Schablonen erstellen und dann versuchen eine Zahle zu identifizieren,.. der Rest ist dann nur noch die doppelte For-Schleife.
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Breakdowncookie
Hält's aus hier

Beiträge: 6
Dabei seit: 12.02.2010



BeitragVerfasst: Mo 15.02.10 18:14  Antworten mit Zitat Beitrag melden
Ansonsten, wenn es sich um ein 12 Megapixel-Bild o.ä. handelt, kannst du auch erstmal downsizen. Das spart enorm Performance.
Private Nachricht sendenPosting in privater Nachricht zitieren
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

(Threadstarter)

Beiträge: 307
Erhaltene Danke: 1
Dabei seit: 20.09.2008



VS2005 Standard / C# & VB.Net
BeitragVerfasst: Mo 15.02.10 18:48  Antworten mit Zitat Beitrag melden
Supi, danke für die Zahlreichen Anregungen! Nur frage ich mich, wie es ohne teachen gehen soll, wenn ich die Font Art nicht kenne?

_________________
Gruß
Christoph
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Breakdowncookie
Hält's aus hier

Beiträge: 6
Dabei seit: 12.02.2010



BeitragVerfasst: Mo 15.02.10 22:52  Antworten mit Zitat Beitrag melden
Dann erstellst du die Vorlagen nicht aus dem Font, sondern aus deinen Bildern. Werden sich doch bestimmt die Ziffern 0-9 alle finden.
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home