Skip to main content

A python imlementation of the $P Point-Cloud Recognizer

Project description

dollarpy is a python implementation of the $P Point-Cloud Recognizer.


Python Compatibility PyPI Version Format

Build Status Coverage Status

From the website:

The $P Point-Cloud Recognizer is a 2-D gesture recognizer designed for rapid prototyping of gesture-based user interfaces. In machine learning terms, $P is an instance-based nearest-neighbor classifier with a Euclidean scoring function, i.e., a geometric template matcher.

$P is the latest in the dollar family of recognizers that includes $1 for unistrokes and $N for multistrokes. Although about half of $P’s code is from $1, unlike both $1 and $N, $P does not represent gestures as ordered series of points (i.e., strokes), but as unordered point-clouds. By representing gestures as point-clouds, $P can handle both unistrokes and multistrokes equivalently and without the combinatoric overhead of $N. When comparing two point-clouds, $P solves the classic assignment problem between two bipartite graphs using an approximation of the Hungarian algorithm.

Vatavu, R. D., Anthony, L., & Wobbrock, J. O., “Gestures as Point Clouds: A $P Recognizer for User Interface Prototypes”, in: Proceedings of the 14th ACM International Conference on Multimodal Interaction (ICMI), Santa Monica, LA, USA, 2012, pp. 273-280.


dollarpy can be installed using pip:

pip install dollarpy


dollarpy is used in 3 steps:

from dollarpy import Recognizer, Template, Point

# Define 'Template' gestures, each consisting of a name and a list of 'Point' elements.
# These 'Point' elements have 'x' and 'y' coordinates and optionally the stroke index a point belongs to.
tmpl_1 = Template('X', [
    Point(0, 0, 1),
    Point(1, 1, 1),
    Point(0, 1, 2),
    Point(1, 0, 2)])
tmpl_2 = Template('line', [
    Point(0, 0),
    Point(1, 0)])

# Create a 'Recognizer' object and pass the created 'Template' objects as a list.
recognizer = Recognizer([tmpl_1, tmpl_2])

# Call 'recognize(...)' to match a list of 'Point' elements to the previously defined templates.
result = recognizer.recognize([
    Point( 31, 141, 1),
    Point(109, 222, 1),
    Point( 22, 219, 2),
    Point(113, 146, 2)])
print(result)  # Output: ('X', 0.733770116545184)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dollarpy-0.1.1.tar.gz (4.1 kB view hashes)

Uploaded source

Built Distribution

dollarpy-0.1.1-py2.py3-none-any.whl (3.7 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page