Skip to main content

Python bindings for apriltags v3

Project description

pupil-apriltags: Python bindings for the apriltags3 library

Build Status PyPI PyPI - Python Version PyPI - Format

These are Python bindings for the Apriltags3 library developed by AprilRobotics, specifically adjusted to work with the pupil-labs software. The original bindings were provided by duckietown and were inspired by the Apriltags2 bindings by Matt Zucker.

How to get started:

Requirements

Note that pupil-apriltags currently only runs on Python 3.6 or higher.

Also we are using a newer python build system, which can fail for older versions of pip with potentially misleading errors. Please make sure you are using pip > 19 or consider upgrading pip to the latest version to be on the safe side:

python -m pip install --upgrade pip

Install from PyPI

This is the recommended and easiest way to install pupil-apriltags.

pip install pupil-apriltags

We offer pre-built binary wheels for common operating systems. In case your system does not match, the installation might take some time, since the native library (apriltags-source) will be compiled first.

Manual installation from source (for development)

You can of course clone the repository and build from there. For development you should install the development requirements as well. This project uses the new python build system configuration from PEP 517 and PEP 518.

# clone the repository
git clone --recursive https://github.com/pupil-labs/apriltags.git
cd apriltags

# install apriltags in editable mode with development requirements
pip install -e .[dev]

# run tests
tox

Usage

Some examples of usage can be seen in the src/pupil_apriltags/bindings.py file.

The Detector class is a wrapper around the Apriltags functionality. You can initialize it as following:

from pupil_apriltags import Detector

at_detector = Detector(families='tag36h11',
                       nthreads=1,
                       quad_decimate=1.0,
                       quad_sigma=0.0,
                       refine_edges=1,
                       decode_sharpening=0.25,
                       debug=0)

The options are:

Option Default Explanation
families 'tag36h11' Tag families, separated with a space
nthreads 1 Number of threads
quad_decimate 2.0 Detection of quads can be done on a lower-resolution image, improving speed at a cost of pose accuracy and a slight decrease in detection rate. Decoding the binary payload is still done at full resolution. Set this to 1.0 to use the full resolution.
quad_sigma 0.0 What Gaussian blur should be applied to the segmented image. Parameter is the standard deviation in pixels. Very noisy images benefit from non-zero values (e.g. 0.8)
refine_edges 1 When non-zero, the edges of the each quad are adjusted to "snap to" strong gradients nearby. This is useful when decimation is employed, as it can increase the quality of the initial quad estimate substantially. Generally recommended to be on (1). Very computationally inexpensive. Option is ignored if quad_decimate = 1
decode_sharpening 0.25 How much sharpening should be done to decoded images? This can help decode small tags but may or may not help in odd lighting conditions or low light conditions
debug 0 If 1, will save debug images. Runs very slow

Detection of tags in images is done by running the detect method of the detector:

tags = at_detector.detect(img, estimate_tag_pose=False, camera_params=None, tag_size=None)

If you also want to extract the tag pose, estimate_tag_pose should be set to True and camera_params ([fx, fy, cx, cy]) and tag_size (in meters) should be supplied. The detect method returns a list of Detection objects each having the following attributes (note that the ones with an asterisks are computed only if estimate_tag_pose=True):

Attribute Explanation
tag_family The family of the tag.
tag_id The decoded ID of the tag.
hamming How many error bits were corrected? Note: accepting large numbers of corrected errors leads to greatly increased false positive rates. NOTE: As of this implementation, the detector cannot detect tags with a Hamming distance greater than 2.
decision_margin A measure of the quality of the binary decoding process: the average difference between the intensity of a data bit versus the decision threshold. Higher numbers roughly indicate better decodes. This is a reasonable measure of detection accuracy only for very small tags-- not effective for larger tags (where we could have sampled anywhere within a bit cell and still gotten a good detection.)
homography The 3x3 homography matrix describing the projection from an "ideal" tag (with corners at (-1,1), (1,1), (1,-1), and (-1, -1)) to pixels in the image.
center The center of the detection in image pixel coordinates.
corners The corners of the tag in image pixel coordinates. These always wrap counter-clock wise around the tag.
pose_R* Rotation matrix of the pose estimate.
pose_t* Translation of the pose estimate.
pose_err* Object-space error of the estimation.

Changelog

1.0.2 (2020-04-06)

Changed

  • Added CHANGELOG.md to MANIFEST.in - #27

1.0.1 (2020-01-07)

Changed

  • Switched to semantic versioning format.

Documentation

  • Added changelog.
  • Cleaned up and corrected docs in README.

1 (2019-09-24)

  • Initial release.

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

pupil-apriltags-1.0.2.tar.gz (1.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pupil_apriltags-1.0.2-cp37-cp37m-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.7mWindows x86-64

pupil_apriltags-1.0.2-cp37-cp37m-manylinux2010_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

pupil_apriltags-1.0.2-cp36-cp36m-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.6mWindows x86-64

pupil_apriltags-1.0.2-cp36-cp36m-manylinux2010_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

File details

Details for the file pupil-apriltags-1.0.2.tar.gz.

File metadata

  • Download URL: pupil-apriltags-1.0.2.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.8

File hashes

Hashes for pupil-apriltags-1.0.2.tar.gz
Algorithm Hash digest
SHA256 2a92b7c0cd691a781181f370b676c485fa4eb1725392583dc5ed17dda4834cb2
MD5 1c4f56cace700b68b2417b885ab112cf
BLAKE2b-256 94eaa95c34c393ecc6b4b0068c5b5e0ef369ca83b0a8d16f566c5d6fe615f6ff

See more details on using hashes here.

File details

Details for the file pupil_apriltags-1.0.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pupil_apriltags-1.0.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.4

File hashes

Hashes for pupil_apriltags-1.0.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 d2de705e03b8c29f83c67946f59bb1f383a66210be55c77ff35214462434ccc7
MD5 95a06295f13c4e2f8badcd07b1660ffa
BLAKE2b-256 c2228b9b67800ac00fdda80c44e5d174de361bbf1efd846e569ea8f869149ebc

See more details on using hashes here.

File details

Details for the file pupil_apriltags-1.0.2-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: pupil_apriltags-1.0.2-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.4

File hashes

Hashes for pupil_apriltags-1.0.2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7c8d2e64160033105a51b6487e65d18665ae321fc8e4abfa4d70d57fe32be70a
MD5 d4e471658cbc8c92a2d7ac3dd790e9a1
BLAKE2b-256 5c959716ea70edc59043ebde569ad0549eb5522d045e8f47df71793d6d6785c6

See more details on using hashes here.

File details

Details for the file pupil_apriltags-1.0.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: pupil_apriltags-1.0.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.8

File hashes

Hashes for pupil_apriltags-1.0.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 fa5b3d689e3d4d346ab87e7344410dcd809eebc38da3047adc32fd18565e1adb
MD5 7a0f6a00dc8d6b003b67c3c2d3f07743
BLAKE2b-256 d30a795e7f9ccc2f65a33bc61284a8c895bf6d238885aa61751925deff677a80

See more details on using hashes here.

File details

Details for the file pupil_apriltags-1.0.2-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: pupil_apriltags-1.0.2-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.8

File hashes

Hashes for pupil_apriltags-1.0.2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 370a384f2aed628c41d2e31cc9c6d42ac23d6745f70a74c55ca8f095469efebc
MD5 c17b65c61a1e367e38e73973685e6d55
BLAKE2b-256 b5fb90a3dd39dd8c9c875ad2d620a0c18c4b6ea362dc99e0b31011291321771f

See more details on using hashes here.

Supported by

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