EyE Annotation Tool
A Qt-based desktop tool for annotating pupil, limbus (iris), eyelid, and glints in eye images. Supports monocular and binocular projects with per-eye detector selection and annotations, and auto-detectors for each annotation type. Auto-detectors come from cheshm.
Features
- Monocular and binocular projects; detector selection, ROIs, and annotations stored per eye.
- 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.
Metadata
Release files for eye-annotation-tool 4.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eye_annotation_tool-4.0.1.tar.gz | 2.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eye_annotation_tool-4.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.2 MB
Release files / eye_annotation_tool-4.0.1.tar.gz
| Download URL | eye_annotation_tool-4.0.1.tar.gz |
|---|---|
| Size | 2.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6178962be5d270a0614f1b0f746d239e982536ee5709816ed6a4e88aa0b373ec
|
|
BLAKE2b-256 checksum How to use checksums |
a971e43fda8022c2479547c2b5d2264aeb51c716dd5aed3ba678564c00c10511
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Release files / eye_annotation_tool-4.0.1-py3-none-any.whl
| Download URL | eye_annotation_tool-4.0.1-py3-none-any.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dd7077a832fef835e15567c3040636e1176211a04a68b880b13690f79dfec47f
|
|
BLAKE2b-256 checksum How to use checksums |
cffc2ccf1a7cdbad75cf99aac9f99bc812e5ae856f88b1fde983ae92750fd93d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|