Entwickler-Ecke
Freeware Projekte - ScreenWriting UPDATE
luckyluke84 - Di 06.11.07 18:40
Titel: ScreenWriting UPDATE
ScreenWriting
Schreib eine Zahl mit der Maus auf eine Fläche und
das Programm erkennt es. Bei mir klappt es, ich
würd gerne wissen, ob es bei euch auch klappt.
(Hinweise im Programm beachten !)
Ladet dazu mein Demoprogramm im Anhang runter: (Größe: 0,4 MB)
Update 06. April 08
* nochmals komplett überarbeitet, damit das Programm bald auch Buchstaben erkennen kann
* erstes Beispielprogramm (Alpha-Version)
Update 02. Jan 08
Folgendes wurde verbessert:
* bessere Zahlenerkennung
* bereits Geschriebenes verschwindet nicht mehr einfach so
* kleinere Demodatei
Ich habe die eine oder andere Idee umgesetzt ohne etwas zu löschen, was nicht mehr benötigt wird.
Deshalb gibts den Quellcode erst später.
Vorsicht: Manchmal stürzt das Programm ohne Grund ab.... den Fehler konnte ich bis jetzt noch nicht finden
Gebt mir euer Feedback!
Update 12. Nov 07
Ich habe bereits mit der Beschriftung und Erklärung der Unit begonnen, sowie die Erkennungsraten
verbessert. Mein Programm erkennt bereits (93%) meiner geschriebenen Zahlen. Testet mein Demo-
programm und schaut ob ihr mit/ohne Übung auch so eine rel. hohe Erkennung erreicht. Anbei dem
Demoprogamm ist eine Bild-Datei, die zeigt welche Schreibweisen mein Programm alles "unterstützt".
Update 8. Nov 07
Ich hab wieder ein paar neue Ideen gehabt die ich natürlich gleich
umsetzen musste. Ein paar Sachen funktionieren schlechter, viele
aber besser. Schaut euch die Demo an.
Der Source-Code ist ab sofort erhältlich, leider schreibe ich mit
Lazarus, daher weiß ich nicht wieviele Ihn angucken können.
Für alle die selber ein wenig rumspielen wollen gibts die
Unit + kleines Tutorial.
Gebt mir ein wenig Feedback:
- Welche eurer Zahlen erkennt das Programm nicht?
- Werden bestimme Zahlen immer falsch erkannt?
gehstock - Di 06.11.07 18:56
Nur die 4 Zickt etwas rum ansonsten klappt es prima
Yogu - Di 06.11.07 19:02
Er erkennt: 0 2 3 6 7 8
Mit viel Anstrengung: 1 5
Geht einfach nicht: 4 9
Mitmischer 1703 - Di 06.11.07 19:08
Bei mir klappt die vier :nixweiss:
luckyluke84 - Di 06.11.07 19:11
Yogu hat folgendes geschrieben: |
Er erkennt: 0 2 3 6 7 8
Mit viel Anstrengung: 1 5
Geht einfach nicht: 4 9 |
Hi Yogu, kannst du mir mal einen ScreenShot zeigen/schicken, in dem du die Zahlen geschrieben hast,
die nicht oder nur schwer erkannt werden?
Yogu - Di 06.11.07 19:26
Bei der Eins darf man keinen Schlenker einbauen, das habe ich wohl gemacht. Bei der Vier muss man den richtigen Winkel treffen. Die 5 und 9 hab ich als Anhang eingefügt. Diese zwei Zahlen krieg ich einfach nicht hin.
Gausi - Di 06.11.07 19:27
Hi,
Generell eine tolle Idee, und oft funktioniert das auch. Manchmal aber auch nicht, wie im Anhang recht klar zu sehen ;-)
luckyluke84 - Di 06.11.07 19:31
Yogu hat folgendes geschrieben: |
| Bei der Eins darf man keinen Schlenker einbauen, das habe ich wohl gemacht. Bei der Vier muss man den richtigen Winkel treffen. Die 5 und 9 hab ich als Anhang eingefügt. Diese zwei Zahlen krieg ich einfach nicht hin. |
Deine Neun wird mein Programm nicht erkennen... du schreibst sie eben nicht wie in der Schule..
Ist aber kein Problem, ich kann die Schreibweise hinzufügen.
Bei der 5 bin ich mir nicht ganz sicher... du scheinst zwischendurch abzusetzen.
Die 5 wird eigentlich immer erkannt wenn man entweder rechts oben mit einem waagerechten Strich
anfängt, odeer wenn man mit einen vertikalen Strich anfängt und den waagerechten nach einmal
absetzen zieht.
Probiers mal.
Tilman - Di 06.11.07 19:44
Also ich hab das Programm mal mit einem selbstgeschriebenen Spezial-Tool getestet, und praktisch alle Zahlen werden gut erkannt wenn sie aus geraden linien bestehen (hatte ich aber auch erwartet ;-))
luckyluke84 - Di 06.11.07 19:57
Tilman hat folgendes geschrieben: |
| Also ich hab das Programm mal mit einem selbstgeschriebenen Spezial-Tool getestet, und praktisch alle Zahlen werden gut erkannt wenn sie aus geraden linien bestehen (hatte ich aber auch erwartet ;-)) |
Cool... aber ich bin genauso gut wie dein Spezial Tool. Das liegt wahrscheinlich daran, dass
ich solange rumprobiert habe bis das Programm meine Schrift erkennt.
luckyluke84 - Di 06.11.07 20:19
Du hast ja so recht ;-) Ich habs von "auf dem Bildschirm schreiben" abgeleitet.
Das Programm "merkt" sich die Bewegungen der Maus und guckt zu welcher Zahl es
passt.
Vorerst werd ich das Programm/ die Unit nicht umbenennen. Bin aber offen für
eine bessere Bezeichnung.
chrisdrury - Mi 07.11.07 16:03
Mich würde der Quellcode interessieren, wird es vielleicht eine Open-Source-Version geben?
gehstock - Mi 07.11.07 16:14
wer sagt das man nicht absetzen darf
luckyluke84 - Mi 07.11.07 17:31
chrisdrury hat folgendes geschrieben: |
| Mich würde der Quellcode interessieren, wird es vielleicht eine Open-Source-Version geben? |
1.) Den Quellcode gibts für alle denen es interessiert. Noch ein wenig Gedult, er wird
gerade überarbeitet.
2.) Man sollte eigentlich nicht absetzen dürfen... Wenn's doch geht muss ich irgendwo ein Fehler gemacht
haben. Die 8 wird vielleicht erkannt... bei manchen anderen klappt das evtl. nicht.
GTA-Place - Mi 07.11.07 18:11
Ich hab Probleme bei 2, 4, 7 und 9.
Sinspin - Mi 07.11.07 18:56
Also, schreibe ich ne Zahl schön leserlich wird mir gesagt das ich doch bitte nicht rumkritzeln soll!
Für ne 5 wird mir 4 gesagt (wenn ich glück habe), für nahezu jede andere Zahl wird mir gesagt das diese nicht erkannt wird.
Die Dialoge kommen wann sie wollen und, falls sie das Bild überdecken löschen sie den vorhanden Inhalt so das ich nicht weiter malen kann da ich nicht mehr sehe wo ich abgesetzt habe.
Im übrigen analysiert eine Schrifterkennung nicht die Bewegung des Stifts sondern eigentlich erst das vollständige gekrakel. Und, selbst wenn, hat es nix dagegen wenn man zwischendurch mal absetzt.
Ich habe schon ettliche OCR Projekte gesehen die einfach wieder eingestellt wurden weil es wohl doch mehr Aufwand gemacht hat als sich die Entwickler anfangs gedacht haben.
Ich kann nur alle bewundern die weiter machen und zu einem Ergebnis kommen!
Ich habe sowas mal für Verkehrsschilder ausprobieren können. Allerdings hatte ich dafür ein Leistungsstarkes Programm für neuronale Netze zur Verfügung. Den SOM Simulator von David Sommer
Diplomarbeit David Sommer [
http://www.sund.de/STUDIUM/DIPLOM/Index.htm].
Wie das ganze laufen muss ist mir im großen und ganzen bekannt.
Hat man als Wissensbasis gut trainierte neuronale Netze, dürfte man recht gute Ergenisse erzielen. Wobei die eigentliche Erkennung von so vielen Faktoren abhängt, das man selbst mit einer guten Wissensbasis über die möglichen Formen der zu erwartenden Zeichen noch einiges zu tun hat um erstmal brauchbare Bildschnipsel zu erhalten die man den Netzen vorsetzen kann.
chrisdrury - Do 08.11.07 09:31
luckyluke84 hat folgendes geschrieben: |
1.) Den Quellcode gibts für alle denen es interessiert. Noch ein wenig Gedult, er wird
gerade überarbeitet.
2.) Man sollte eigentlich nicht absetzen dürfen... Wenn's doch geht muss ich irgendwo ein Fehler gemacht
haben. Die 8 wird vielleicht erkannt... bei manchen anderen klappt das evtl. nicht. |
Na da warte ich doch gern... :wink:
luckyluke84 - Fr 09.11.07 01:03
Titel: kleines Tutorial
1.) Globale Variablen festlegen und Unit einbinden
Kopiert die Datei "screenwriting.pas" in eurer Verzeichnis und bindet sie folgendermaßen ein.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| uses screenwriting;
var Form1: TForm1; MyWriting : TScreenWriting; MausGedrueckt : Boolean; |
2.) Jetzt benutzen wir ein paar Ereignisse des Formulars "Form1"
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure TForm1.FormCreate(Sender: TObject); begin MyWriting := TScreenWriting.Create; Panel1.Canvas.Pen.Width := 4; end;
procedure TForm1.FormDestroy(Sender: TObject); begin MyWriting.Free; end;
procedure TForm1.MouseDown(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Mausgedrueckt := True; Panel1.Canvas.PenPos := Point(x,y); end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin If Mausgedrueckt then begin MyWriting.AddPoint(Point(x,y)); Panel1.Canvas.LineTo(x,y); end; end;
procedure TForm1.Panel1MouseUp(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Mausgedrueckt := False;
if NOT MyWriting.IdentifyNumber then begin showmessage('Bitte schreiben Sie deutlicher!' + chr(13) + chr(13) + MyWriting.ErrorMessage); end; end; |
3.) Zu guter letzt fehlt noch eine Schaltfläche, die euer Ergebnis ausgibt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Deine Zahl lautet: ' + MyWriting.Text); MyWriting.New; Form1.Canvas.Clear; end; |
4.) Viel Spaß beim rumprobieren.... eine bessere Erkennung ist in Arbeit. Solltet ihr
bei meinen Quellcode/Prinzip wirklich durchgucken, lass ich mir gerne helfen.
Denkt dran, das ist mein erstes "Programm"... es kann nur besser werden!
Moderiert von
matze: Delphi-Tags hinzugefügt
chrisdrury - Fr 09.11.07 10:07
Alles klar, danke schön!! :wink: :lol:
luckyluke84 - Mo 12.11.07 23:10
Titel: Update Nummer 3
Ich möchte alle danken die sich die Zeit genommen haben mein
Programm zu testen... Ich bin schon ziemlich zufrieden mit
meinem Programm, obwohl es definitiv noch verbesserungswürdig ist.
Ich werd mich jetzt an die Arbeit machen und es in ein Programm
einbeziehen... Wie lange das dauert weiß keiner ;-)
Vielen Dank an dem "Admin"?? Ich hab keine Ahnung wie man den Quellcode
so schön einbinden kann.
luckyluke84 - Mi 02.01.08 04:08
Titel: Ein neues Update ist da...
... jetzt brauch ich wieder Freiwillige. Diesmal lohnt es sich einen Blick drauf zu werfen.
Damit das nächste Testprogramm nicht zu langweilig wird, werd ich für alle die
"Dr. Kawashimas Gehirn Jogging" kennen die "Rechnen 20" Übung programmieren.
luckyluke84 - So 06.04.08 17:53
Titel: Neues Update!!
Mal schauen, ob sich die viele Arbeit gelohnt hat. Die Schrifterkennung ist nochmal komplett umgeschrieben,
sodass es ohne weiteres möglich ist in naher Zukunft auch Buchstaben zu erkennen.
Probiert bitte mit der ScreenWritingDemo.exe die Erkennung aus. Das nichts erkannt wurde, seht ihr schon daran, dass in der Liste rechts unter der Klammer "()" nichts steht. Macht doch bitte einen ScreenShot und stellt das Bild ins Forum, ich kümmer mich darum, dass die Zahl dann fortan auch erkannt wird.
Viel Spaß beim Rumspielen !
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!