AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Gesture - ein lernfähiges Mausgesten-Erkennungssystem
Thema durchsuchen
Ansicht
Themen-Optionen

Gesture - ein lernfähiges Mausgesten-Erkennungssystem

Ein Thema von OrallY · begonnen am 28. Jul 2004 · letzter Beitrag vom 2. Aug 2004
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von OrallY
OrallY
Registriert seit: 29. Apr 2003
Gesture (Pre-Alpha Version)

So, nachdem durch einen Systemabsturtz ne Menge Daten verloren gingen, habe ich mich hingesetzt und Gesture noch einmal geschrieben. Und nun ist es wieder auf dem Entwicklungsstand wie das alte.

Was ist Gesture?
Gesture ist ein lernfähiges Mausgesten-Erkennungssystem, was nichts anderes heißt, als dass man dem Programm Gesten beibringen kann, die mit der Maus einfach auf den Bildschirm gezeichnet werden.

Wie benutze ich Gesture?
Wenn das Programm gestartet wird, nistet es sich im SysTray ein. Nun kann mit gedrückter rechter Maustaste irgendwo auf dem Bildschirm eine Geste gemalt werden. Nach loslassen der Taste verschwindet die Geste sofort wieder. Im Kontextmenü des TrayIcons lässt sich mit "Geste speichern" die aktuell gezeichnete Geste speichern. Von nun an sollte Gesture, wenn diese Geste nocheinmal gezeichnet werden, diese auch erkennen (In diesem Falle erscheint die Meldung: "Gesture Found: {Gesten-Index}". Kann keine Geste erkannt, werden erscheint die Meldung: "No Gesture Found." (das ist auch der Fall, wenn noch keine Geste gespeichert wurde).

Was ich mit Gesture noch vorhabe:
Durch die Mausgesten sollen Aktionen ausgeführt werden (wie z.B: öffne Mail-Client etc.). Dabei können Gesten global gelten oder nur auf bestimmte Anwendungen beschränkt werden. Die mögliche Auswahl der Aktion soll durch ein Plugin-System erweiterbar sein. Die Aktionszuweisung soll über ein seperates Programm erfolgen, was ich wahrscheinlich mit Hilfe der VCL schreiben werde.
Auch gefallen würde mir die Aktionen über eine Scriptsprache zu realisieren, allerdings wüsste ich noch nicht, welche dafür in Frage käme... .



Ich habe versucht in den Kommentare so viel zu erklären, wie möglich. Wenn etwas nicht nachvollziehbar ist, einfach nachfragen.

Also, wer Lust hat, kann sich in den Code einarbeiten (wobei ich natürlich helfe, so gut ich kann) und mitprogrammieren, ist ja schließlich OpenSource . Wenn das Programm ersteinmal soweit ist, dass es auch benutzbar ist, werde ich es unter Sourceforge veröffentlichen (http://gesturerec.sourceforge.net).

aktuelle Version:
Gesture 0.0.2 (Pre-Alpha-Version)
Änderungen: Nur Bugfixes
Kompilat: http://prdownloads.sourceforge.net/g...a.zip?download [26KB]
Source: http://prdownloads.sourceforge.net/g...a.zip?download [23KB]

[Edit: 15. Mai 2005]
Hinweis:
Ich wurde vor Kurzem gebeten, eine neue Version von Gesture hier vorzustellen. Da allerdings aus Zeitmangel die Entwicklung nur in periodischen Intervalen vorangeht, wird es wohl noch eine Weile dauern, bis ich die nächste Pre-Alpha veröffentliche.
Bis dahin kann der Interessierte den Fortschritt im CVS Repository verfolgen:
http://cvs.sourceforge.net/viewcvs.py/gesturerec/
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
 
Anubis
 
#21
  Alt 28. Jul 2004, 18:29
Zitat von OrallY:
Wie funktioniert bei euch die Gestenerkennung?
gut, hatte bis jetzt keinen Fehler.

WinXP Sp2 (Pre)

zu Früh gefreut, hatte gerade nen üblen http://mitglied.lycos.de/adomszent/fehler_gesten.jpg

hab einfach die rechte Maustaste mal nicht losgelassen und eine RIESIGE Geste gezeichnet. (kam nur einmal, sonst bricht er bei zu langen Gesten ohne Fehler ab)
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B
 
#22
  Alt 28. Jul 2004, 18:31
Zitat von OrallY:
Passiert das bei dir bei jedem Mal?
Wenn nein, dann ist das ein Bug, denn ich noch lösen muss. Anscheindend wird irgendwo im Code eine fehlerhafte Berrechnung durchgeführt.
Soweit ich weiß, kam das nur einmal vor.
Danach kamen immer nur so Fehler wie "Keine Geste vorhanden" oder so!
Simon Praetorius
  Mit Zitat antworten Zitat
Anubis
 
#23
  Alt 28. Jul 2004, 18:45
Wenn man jedesmal eine Geste solange zeichnet bis das Programm nicht mehr mitzeichnet, bleibt das Programm nach dem 3ten Mal (also bei der 4. grossen Geste) hängen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry

 
Delphi 2006 Professional
 
#24
  Alt 28. Jul 2004, 18:50
Hab bissl rumprobiert und dann hats auch mal geklappt. Was ich nicht weiß: Muss ich erst auf "Geste speichern" klicken und dann die Geste zeichnen oder umgekehrt? Hab einfach die gehste vor und nach einem klick auf "Geste speichern" gemalt so das es irgendwie klappt. Dann fände ich eine übersicht nicht schlecht wo man die ganzen gehsten sieht mit dem raum der darum liegt. wenn ich also zum beispiel ein "Z" male wöllte ich ein Fett gezeichnettes "Z" sehen damit ich weiß wie genau ich die figur nachzeichnen muss. Und dann fänd ichs noch supi wenn man die genauigkeit einstellen könnte. Also das beim erneuten zeichnen die pixel pro Punkt maximal 20 Pixel von denen der ursprünglichen Zeichnung abweichen dürfen wobei die 20 einstellbar sein soll... Wenn man das ganze noch mit funktionen dann hinterlegen lassen kann würde ich das prog auf jeden fall täglich nutzen.

Achja, noch paar dinge die ich mir wünschen würde: Es wäre nicht schlecht wenn man einstellen könnte ob der Linie auf den Desktop gezeichnet wird oder nicht. Dann wenn man noch die Tastenkombination einstellen könnte. Also das ich zum Beispiel Strg + Linke Maustaste zum erstellen einer neuen Funktion drücken muss und zum abrufen das ganze auch optional. Eventuell sogar so das man einstellen kann das die maustaste gar nicht dazu gedrückt werden muss. Also das die maus einfach nur bewegt werden muss wobei da die problematik ist herauszufinden wann meine zeichnung anfängt, aber das ist ja dann das Problem des Programmierers

Hab grad gemerkt dasses programm nen neuen ordner anlegt zur speicherung oder so, wäre ni schlecht wenn man den ort selbst bestimmen könnte.
Jens
  Mit Zitat antworten Zitat
ripper8472
 
#25
  Alt 28. Jul 2004, 19:02
Das Programm ist einfach genial!
Ich würd es schon benutzen, wenn ich damit einfach nur Programme ausführen könnte.
Die gespeicherten Gesten würde ich auch gerne sehen können (und eventuell sogar bearbeiten?) und Hotkeys und maximale Abweichung bei der Gestenerkennung einstellen können.

[edit] bei mir kam einmal "ZeroDivide" (Hab Win2k) als ich einen einfachen senkrechten Strich nach unten gezeichnet habe.

Gruß, Christoph
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY
 
#26
  Alt 28. Jul 2004, 20:56
So, ersteinmal danke für das viele Feedback.



Zitat von Anubis:
hab einfach die rechte Maustaste mal nicht losgelassen und eine RIESIGE Geste gezeichnet. (kam nur einmal, sonst bricht er bei zu langen Gesten ohne Fehler ab)
Ja, da muss ich im Speichermanagment ansetzten.
Zitat von S2B:
Danach kamen immer nur so Fehler wie "Keine Geste vorhanden" oder so!
Wie im ersten Beitrag geschrieben, ist diese Fehlermeldung normal. Er erscheint, wenn die Geste nicht erkannt wurde.
Zitat von Anubis:
Wenn man jedesmal eine Geste solange zeichnet bis das Programm nicht mehr mitzeichnet, bleibt das Programm nach dem 3ten Mal (also bei der 4. grossen Geste) hängen.
Wie gesagt, da muss ich bei Speichermanagment vermutlich was ändern.
Zitat von SirThornberry:
Hab bissl rumprobiert und dann hats auch mal geklappt. Was ich nicht weiß: Muss ich erst auf "Geste speichern" klicken und dann die Geste zeichnen oder umgekehrt? Hab einfach die gehste vor und nach einem klick auf "Geste speichern" gemalt so das es irgendwie klappt.
Eine Geste kann erst erkannt werden, wenn sie gespeichert wurde. Also malst du z.B. ein S und gehst dann auf "Geste speichern". Von nun an sollte dann diese Geste vom Programm erkannt werden, wenn du sie nocheinmal zeichnest. Muss natürlich kein S sein, kann auch ein Zick Zack sein, oder was weiß ich. Nur solltest du die Geste wiederholen können, sonst bringt es ja nichts
Zitat von SirThornberry:
wenn ich also zum beispiel ein "Z" male wöllte ich ein Fett gezeichnettes "Z" sehen damit ich weiß wie genau ich die figur nachzeichnen muss. Und dann fänd ichs noch supi wenn man die genauigkeit einstellen könnte. Also das beim erneuten zeichnen die pixel pro Punkt maximal 20 Pixel von denen der ursprünglichen Zeichnung abweichen dürfen wobei die 20 einstellbar sein soll...
Sorry, aber ich habe keine Ahnung was du mir sagen willst .
Ich versuch das mal zu beantworten, auch wenn ich damit vielleicht in keiner Weise dein Anliegen beantorte, ich versuchs einfach mal: Es gibt keinerlei Vorgaben, welche Gesten du zeichnen kannst. Du kannst dir irgendetwas ausdenken. Eine Dreieck, ein zur einer Seite geöffnetes Viereck, ... was du willst. Nur musst du dir die Geste eben merken und wiederholen können. Ich weiß nicht, was du mit den 20 Pixeln Abweichung meinst
Zitat von SirThornberry:
Achja, noch paar dinge die ich mir wünschen würde: Es wäre nicht schlecht wenn man einstellen könnte ob der Linie auf den Desktop gezeichnet wird oder nicht. Dann wenn man noch die Tastenkombination einstellen könnte. Also das ich zum Beispiel Strg + Linke Maustaste zum erstellen einer neuen Funktion drücken muss und zum abrufen das ganze auch optional. Eventuell sogar so das man einstellen kann das die maustaste gar nicht dazu gedrückt werden muss. Also das die maus einfach nur bewegt werden muss wobei da die problematik ist herauszufinden wann meine zeichnung anfängt, aber das ist ja dann das Problem des Programmierers
Das kommt alles noch. Wichtig war mir zur Zeit, dass ersteinmal die zugrundeliegende Engine getestet wurde. Das Programm ist noch weit entfernt, fertig zu sein (siehe Pre-Alpha-Version).
Wie schon oben geschrieben, werde ich ein komfortables Verwaltungsprogramm schreiben, wo alle gespeicherten Gesten angeguckt werden, Gesten Aktionen zugewiesen werden und Einstellungen vorgenommen werden können (z.B. die Tastenkombination).
Um das Drücken einer Taste, wenn du eine Geste zeichnest wirst du nicht drumrum kommen. Wie du sagst, anders habe ich keine Möglichkeit festzustellen, wann eine Geste begonnen wird. Außerdem könnte es dann mal leicht passieren, dass man aus Versehen eine Geste zeichnet und z.B. plötzlich das aktuelle Programm geschlossen wird.
Zitat von ripper8472:
Die gespeicherten Gesten würde ich auch gerne sehen können (und eventuell sogar bearbeiten?) und Hotkeys und...
Wie schon gesagt, das Verwaltungsprogramm kommt noch .
Zitat von ripper8472:
...maximale Abweichung bei der Gestenerkennung einstellen können.
Meinst du die Erkennungstoleranz? Ich habe Stunden gebraucht um den Parametern den Wert zu geben, dass einerseits das Programm tolerant genug ist, kleinere Abweichungen zu schlucken und andererseits nicht zu tolerant ist und aus einem N ein M liest. Ein Regler einzubauen dürfte gar nicht so einfach sein. Mal sehen...


Der ZeroDivide-Fehler sowie der Fehler, der manchmal nach der Gestenzeichung auftritt, sind Probleme die mir zwar bekannt sind, aber deren Lösung ich noch nicht ersonnen habe. Die kritische Stelle ist in der GestureRec2.pas in Zeile 564 und Zeile 573 zu finden.


Die Bedienung wird auf jedenfall noch um einiges komfortabler! Doch braucht es noch einige Zei, bis Gesture so weit ist.

Bis dahin zum Testen:


Wie benutzt ich Gesture (die aktuelle Pre-Alpha-Version):
Mit gedrückter rechter Maustaste eine Geste auf den Bildschirm malen. Gefällt euch die Geste und ihr wollt, dass Gesture sie "lernt" dann geht ihr (ohne eine neue Geste zu zeichnen!) auf "Geste speichern" im Kontextmenü des TrayIcons. Von nun an sollte Gesture die Geste wieder erkennen, wenn sie irgendwann wieder auf den Bildschirm gezeichnet wird. Sollte dies der Fall sein, erscheint die Meldung "Gesture found: [Gesten-Index]". Der Index beginnt bei 0, das heißt, die erste gespeicherte Geste erhält den Index 0, die zweite 1, usw.
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY
 
#27
  Alt 28. Jul 2004, 21:02
Noch ein Hinweis, wie man am besten Gesten zeichnet, damit sie auch erkannt werden:
  • Gesten sollten nicht zu klein geraten. Sie sollten wenigsten 1/3 der Höhe des Bildschirms haben
  • Die Gesten möglichst in der Lage zeichnen, wie sie auch gespeichert wurden. Also um ein Extrem zu nennen: Ein liegendes S ist nicht gleich einem stehendem S!

So eine Gestenerkennungsroutine ist immer ein Spagat zwischen genügend Toleranz um kleinere Zeichenfehler zu ignorieren und als solche zu erkennen und nicht zuviel Toleranz, so dass plötzlich ein M für ein N gehalten wird.
"I do my very best, Mrs. Sophie."

Wiedereinmal wird deutlich, wie schwer für einen Computer etwas sein kann, wozu ein Säugling schon in der Lage wäre (und wie schwer es für den Programmierer ist, es dem Computer trotzdem beizubringen ).
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY
 
#28
  Alt 28. Jul 2004, 21:25
So, ich habe die Erkennung ein wenig Toleranter gemacht. Die Erkennung sollte nun besser funktionieren.

Kompilat: http://mokasin.de/projects/Gesture/Gesture.zip [34KB]
Sauce: http://mokasin.de/projects/Gesture/Gesture-source.zip [15KB]
  Mit Zitat antworten Zitat
NeoLuxembourg
 
#29
  Alt 28. Jul 2004, 21:51
Ja ja .. nich schlecht .. sehr gut sogar

Das mit der Erkennung klappt jo schon sehr gut !

Nur, nach 5 - 6 versuche .. total crach ... Windows Shell ganz verstümelt ... oO .. Versuchts nochmal ... und mache nen screen wenns geht!

[EDIT]
Nope, <Print Screen> will nicht .. .. ABER .. es kommt immer beim 10. Versuch!
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY
 
#30
  Alt 28. Jul 2004, 22:00
Ich glaub da stimmt irgendwas mim Speichermanagment nicht. Wenn man mal die Speicherauslastung im Taskmanager anschaut, während man Gesten zeichnet. Es kommt nur ständig was dazu ohne, dass wieder was freigegeben wird.

Ich benutze ja schon einen statischen Array mit einer Länge von 2000. Wie kann ich den Speicher wieder freigeben, der benutzt wird?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz