Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

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.

Files for dollarpy, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size dollarpy-0.1.1-py2.py3-none-any.whl (3.7 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size dollarpy-0.1.1.tar.gz (4.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page