An interactive PyQt5 image annotation tool for segmentation masks and bounding boxes.
Project description
Tadqeeq โ Image Annotator Tool
An interactive image annotation tool built with PyQt5, designed for efficient labeling of segmentation masks and bounding boxes.
Developed by Mohamed Behery @ RTR Software Development - An "Orbits" Subsidiary ๐ April 30, 2025 ๐ชช Licensed under the MIT License
๐ Widget Features
- โ Minimalist Interactive Design
- ๐๏ธ Scroll through label classes / Adjust pen size with the mouse wheel
- ๐จ Supports segmentation masks (.png) and bounding boxes (.txt)
- ๐ง Dynamic label color generation (HSV-based)
- ๐ฌ Floating labels showing hovered and selected classes
- ๐พ Auto-save and manual save (Ctrl+S)
- ๐งฝ Flood-fill segmentation with a postprocessing stage of binary hole filling
- ๐ซ Right-click erase mode and double-click to clear all
๐ CLI Features
- โ Minimalist Design
- ๐จ Navigate through images using A and D.
๐ฆ Installation
Option 1: Install via pip
pip install tadqeeq
Option 2: Run from source
git clone https://github.com/orbits-it/tadqeeq.git
cd tadqeeq
pip install -r requirements.txt
๐ ๏ธ Usage
Import in your code:
from tadqeeq import ImageAnnotator
Run CLI tool from command line (if installed via pip):
tadqeeq [--autosave|--use_bounding_boxes]* <images_directory_path> <annotations_directory_path>
Notes:
1. Use A and D to navigate through images.
2. If "--use_bounding_boxes" is included:
a) the annotations files are PNG for segmentation masks with class-labeled pixels on a white background.
b) the annotations files are txt for YOLO-style bounding boxes formatted as: label_index x_offset y_offset width height
๐งญ Controls
| Action | Mouse/Key |
|---|---|
| Draw / Fill segment | Left-click / double-click |
| Erase (one object) | Right-click + Left-click |
| Toggle erase mode | Right-click |
| Clear all | Double right-click |
| Scroll through labels / Adjust pen size | Mouse wheel |
| Save annotations | Ctrl+S |
| Show label on hover | Hover cursor |
| Navigate through images (CLI only) | A / D |
๐ Project Structure
root/
โโโ tadqeeq/
| โโโ __init__.py # Entry point for importing
| โโโ widgets.py # Contains ImageAnnotator class
| โโโ utils.py # Helper methods (flood fill, bounding box logic)
| โโโ implementations.py # Contains an example integration of ImageAnnotator class
| โโโ cli.py # Entry point for full solution
โโโ README.md
โโโ LICENSE
โโโ setup.py
โโโ pyproject.toml
โโโ requirements.txt
๐งโ๐ป Contributing
Pull requests are welcome!
If you add features (e.g. COCO export, brush tools, batch processing), please document them in the README.
๐ License
This project is licensed under the MIT License.
See LICENSE for the full license text.
๐ก Acknowledgements
๐ Built for computer vision practitioners needing fast, mouse-based labeling with clean overlays and autosave logic.
๐ Special thanks to PyQt5 for providing the powerful and flexible GUI toolkit that made the development of this interactive image annotator possible.
๐ Related Resources
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 tadqeeq-1.4.3.tar.gz.
File metadata
- Download URL: tadqeeq-1.4.3.tar.gz
- Upload date:
- Size: 43.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
806bf1ccca229a16b30b0a8fcef987f4d7800ad53c488ed7989c6bb47dd25c0a
|
|
| MD5 |
aef1518c232209b131d03336c076ec07
|
|
| BLAKE2b-256 |
561926c42b474efbe2f576dff3769d6f3756a32eb5fed3bfee3aadf927252542
|
File details
Details for the file tadqeeq-1.4.3-py3-none-any.whl.
File metadata
- Download URL: tadqeeq-1.4.3-py3-none-any.whl
- Upload date:
- Size: 45.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c8055c88ac6005defa61eea67bb5c92513982c3f11db514bdb8b5a56e455108
|
|
| MD5 |
229bed9fa26991c5d2d9d3d44a9a7a0e
|
|
| BLAKE2b-256 |
4390978f844891aa1d78ed52b23f3ca28b9cc904e714755d91ea97a6f1186d41
|