Skip to main content

A tool for annotating pupil and iris in eye images

Project description

EyE Annotation Tool

PyPI Downloads License DOI

A Qt-based desktop tool for annotating pupil, limbus (iris), eyelid, and glints in eye images. Supports monocular and binocular projects, auto-detectors for each annotation type, and per-eye carry-across-frames workflows. Auto-detectors come from cheshm.

EyE Annotation Tool Main Page

Features

  • Monocular and binocular projects; per-eye overrides for ROI, carry, and defaults.
  • Manual annotation of pupil ellipse, limbus ellipse, eyelid mask, and glints.
  • Live auto-detection that re-runs on image load and detector swap.
  • Auto-detectors are every pupil / glint / limbus detector cheshm exposes (Simple, ElSe, ExCuSe, PuRe, PuReST, PupilLabs2D, Starburst, Swirski2D for pupil; Simple for glint; active_contour, integro_differential, pupil_guided for limbus). See cheshm's detector list for licences.
  • Project sessions with persistent defaults, undo, brightness/zoom controls, and review mode.
  • CLI flags for batch use: --images, --review, --auto-detectors.

Installation

Requirements

  • Python ≥3.10

From PyPI

pip install eye_annotation_tool

Using uv

uv pip install eye_annotation_tool

Or, to add it to an existing uv project:

uv add eye_annotation_tool

From source (editable / development)

git clone https://github.com/mh-salari/eye_annotation_tool.git
cd eye_annotation_tool
uv sync

Or with pip:

git clone https://github.com/mh-salari/eye_annotation_tool.git
cd eye_annotation_tool
python3 -m pip install -e .

Usage

eye_annotation_tool

Or as a module:

python -m eye_annotation_tool

Common CLI flags:

# Open a project and load extra images on top
eye_annotation_tool --project my_project.json --images img1.png img2.png

# Re-annotate a subset of images against an existing project (read-only)
eye_annotation_tool --project my_project.json --review img1.png img2.png

# Enable only a subset of auto-detectors this session
eye_annotation_tool --auto-detectors pupil,limbus

See eye_annotation_tool --help for the full flag list.

Adding your own detectors

To add a custom detector without modifying this project, drop a .py file in ~/.config/eye_annotation_tool/plugins/ (or any directory listed in the EYE_ANNOTATION_PLUGINS env var) that declares a module-level PLUGINS = [DetectorPlugin(...)] list. See eye_annotation_tool/auto_detectors/README.md for the full plugin contract and a minimal example.

Citing

If you use this software, please cite it using the following BibTeX entry:

@software{salari2025eye,
  author    = {Salari, Mohammadhossein},
  title     = {{EyE Annotation Tool}},
  year      = {2026},
  url       = {https://github.com/mh-salari/eye_annotation_tool},
  doi       = {10.5281/zenodo.18723470},
  license   = {MIT}
}

You can also click the "Cite this repository" button on the GitHub page for more citation formats.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

This project has received funding from the European Union's Horizon Europe research and innovation funding program under grant agreement No 101072410, Eyes4ICU project.

Funded by EU Eyes4ICU

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

eye_annotation_tool-2.0.1.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

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

eye_annotation_tool-2.0.1-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file eye_annotation_tool-2.0.1.tar.gz.

File metadata

  • Download URL: eye_annotation_tool-2.0.1.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for eye_annotation_tool-2.0.1.tar.gz
Algorithm Hash digest
SHA256 ac7ba0b9c0d1f989e531c38a28e34a8fced97d8a442b1684e5058eddbbd932fe
MD5 014b29db2adf95101ca48efb22abe982
BLAKE2b-256 5ae05eb7c70008aff0ca22ddf53acd01488907fb8362d0b011eee9a195b93241

See more details on using hashes here.

File details

Details for the file eye_annotation_tool-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for eye_annotation_tool-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1d97963b0b3959d6371f7ba9f6f2a32b191de0c97c1356b09ab3c49aaa21a54c
MD5 44acb7c0f6837e23136194d450eaa82f
BLAKE2b-256 7252da9a265a5f3380dec5937ffd25a7ef3cf4ec0bce293dec4ebec6d3af619d

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