dollarN
Python implementation of $N, the 2D multistrokes recognizer
http://depts.washington.edu/acelab/proj/dollar/ndollar.html
The $N Multistroke Recognizer is a 2-D multistroke recognizer designed
for rapid prototyping of gesture-based user interfaces. $N is built upon
the $1 Unistroke Recognizer. $N automatically generalizes examples of
multistrokes to encompass all possible stroke orders and directions,
meaning you can make and define multistrokes using any stroke order and
direction you wish, provided you begin at either endpoint of each
component stroke, and $N will generalize so as to recognize other ways
to articulate that same multistroke. A version of $N utilizing
Protractor, optional here, improves $N's speed.
Features
Example of use:
import dollarN as dN
r = dN.recognizer()
#By default, a recognizer gives a positive result when gestures have
#the same number of strokes only. This can be turned off:
#r.set_same_nb_strokes(False)
#Rotation invariance can also be turned off:
#r.set_rotation_invariance(False)
#Adding gestures: multistrokes with names
r.add_gesture('U', [ [[0.,5.], [0.,0.], [5.,0.], [5.,5.]] ]) # one stroke
r.add_gesture('X', [ [[0.,0.], [5.,5.]], [[0.,5.], [5.,0.]] ]) # two strokes
r.add_gesture('T', [ [[0.,5.], [5.,5.]], [[2.5,0.], [2.5,5.]]]) # two strokes
#Launching a recognition
test = [[[0, 5.2], [5.,5.]], [[2.5, 0.], [2.5,5.]]]
print( r.recognize(test) )
{'name': 'T', 'value': 0.9484976300936439, 'time': 0.006083965301513672}
Demo
A demo is available with tkDollarN.py here