Die beste Methode, um die vom Finger des Benutzers auf dem iPhone-Bildschirm gezeichnete Nummer zu erkennen

8

Ich plane, einen Benutzer die Form einer Zahl (1 bis 9) in Form einer 7-Segment-Anzeige zeichnen zu lassen. Was ist der beste Weg zu erkennen, welche Nummer gezogen wurde?

Ich weiß, wie man alle Touch-Tracking- und UIGestureRecogniser-Sachen macht - ich suche nach einer guten Logik dafür.

Bisher habe ich: Wenn sich eine Berührung von einer Hälfte eines Segments zur anderen bewegt, markieren Sie dieses Segment. Sobald die Berührungen abgeschlossen sind, überprüfen Sie, welche Segmente hervorgehoben wurden und entscheiden Sie, welche Nummer gezeichnet wurde.

Wege, an die ich gedacht habe, es zu verbessern: Zeichnen Sie eine Form des Fingerpfads auf dem Bildschirm. Wenn die Linie die Mitte eines Segments schneidet, markieren Sie dieses Segment.

Jeder hat irgendwelche Tipps oder bessere Möglichkeiten, dies zu tun? Ich bin offen für jeden Vorschlag - auch wenn das bedeutet, dass ich meinen gesamten Code verschrotze und von vorne anfangen muss.

    
Craig 17.11.2011, 11:28
quelle

2 Antworten

6

Ich habe Implementierungen der $ stroke recognizers für die Erkennung von gezeichneten Zahlen verwendet.

Beide Algorithmen sind mit mehreren Objective-C / iOS-Implementierungen verknüpft.

Die Erkenner vergleichen die Eingabe mit vordefinierten Mustern basierend auf verschiedenen Algorithmen (detaillierte Erklärung auf den verlinkten Seiten verfügbar). Damit dies funktioniert, müssen Sie Ihre eigenen Zahlenmuster erstellen (im Grunde einfach etwas zeichnen und vom Erkenner in eine Datenstruktur konvertieren, die Sie für die spätere Verwendung speichern). Vergleichen Sie dann die Benutzereingabe mit den zuvor aufgezeichneten Mustern, um eine Übereinstimmung zu finden.

Der $ 1-Erkenner war ausreichend für meine Anwendung, bei der ich den Benutzer zuerst trainieren lassen sollte, die Zahlen zu üben. Der $ N-Erkenner ist in der Lage, zwischen komplexeren Stokes zu unterscheiden und komplexere gezeichnete Zahlen zu akzeptieren. Das ist etwas, mit dem Sie experimentieren müssen.

    
Joris Kluivers 22.11.2011, 17:35
quelle
2

Wenn Sie daran interessiert sind, die Zahlen 1-9 zu erkennen, sehen Sie sich BGNumericalGlyphRecognizer an. Ich habe mehrere Monate mit einem $ N-Multistroke-Erkenner gearbeitet, um ScribbleMath (eine Mathematik-App, mit der Kinder ihre Antworten auf dem Bildschirm zeichnen können) zu erstellen und die Kernlogik zu öffnen. Es stellt sich heraus, dass $ N-Erkenner Schwierigkeiten haben, 6 und 9 zu unterscheiden, und auch schlecht darin sind, sehr einfache Buchstaben wie 1 und "-" zu erkennen, und ich habe eine Logik entwickelt, um diese besser zu handhaben. Es ist nicht perfekt, aber es bringt Sie weiter als ein $ N-Erkenner aus der Box. Viel Spaß!

    
Ben Gotow 28.01.2013 05:47
quelle