A tool for annotating pupil and iris in eye images
Project description
EyE Annotation Tool
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.
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,Swirski2Dfor pupil;Simplefor glint;active_contour,integro_differential,pupil_guidedfor 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eye_annotation_tool-1.1.0.tar.gz.
File metadata
- Download URL: eye_annotation_tool-1.1.0.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e85785d7e367978ea8588ed5a6ae4477dcfc0a184ba349d50381f6dc6660ced
|
|
| MD5 |
5e90faed82911961a307e2af829f4ca7
|
|
| BLAKE2b-256 |
16f152679f97a8308a78ebba6a83c9f6b38fc70705f625779a96f58881dc9866
|
File details
Details for the file eye_annotation_tool-1.1.0-py3-none-any.whl.
File metadata
- Download URL: eye_annotation_tool-1.1.0-py3-none-any.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ca460d435f6100e1d2827683d01342720c05988eb1b181bbecfde42a49ac628
|
|
| MD5 |
852ad46b188e0801aea7651f46414292
|
|
| BLAKE2b-256 |
8ed43aebae0c71b3aefe2be791921dd32260efa776f670a6caca567387844912
|