A modern, enhanced image annotation tool for machine learning
labelImg++ is a graphical image annotation tool for bounding boxes, polygons, and keypoints, designed for machine learning and computer vision projects. It is forked from the original LabelImg with significant enhancements.
Version 3.2.0 (stable). Install with pip install labelimgplusplus.
Features
Core Annotation Features
Five annotation formats: PASCAL VOC, YOLO bbox, CreateML, COCO, and YOLO-seg
Bounding box and polygon annotation with interactive editing
Keypoint annotation with COCO 17-point human pose and 5-point face templates; COCO preserves keypoints on export
Auto-save mode for uninterrupted workflow
Predefined class labels with customizable list
Verification system to mark completed annotations
Workflow and Interface
- Undo/Redo Support
Full undo/redo for annotation actions. Press Ctrl+Z to undo and Ctrl+Shift+Z to redo.
- Balanced Modern Workspace
A fixed annotation-tool rail, compact command bar, unified Objects/Files inspector, integrated video timeline, and visible document status keep the active canvas uncluttered. Gallery Mode is embedded in the same workspace, so the annotation tools, inspector, and status remain available while browsing thumbnail previews across all five annotation formats.
Colored borders indicate status: Gray (no labels), Blue (has labels), Green (verified)
Bounding boxes use compact corner markers; polygons use outline previews
Quick size presets (S/M/L/XL) plus slider for fine control
Smart selection: click on nested boxes selects the inner box
Press Ctrl+G to toggle gallery mode
- Modern UI with Feather Icons
Official Feather icons provide a consistent, accessible tool vocabulary.
- Responsive DPI Scaling
Icons and UI elements scale properly on high-DPI displays (4K, Retina).
- Unified Object Inspector
Search and edit rectangles, polygons, keypoints, and video tracks in one Objects view. The Files view keeps the compact file list, thumbnails, and annotation-status filter close at hand, and the inspector can be collapsed when maximum canvas space is needed.
- Direct Ultralytics Dataset Export
Choose Tools → Export Ultralytics Dataset… to create a ready-to-train YOLO detection dataset with images/{train,val,test}, matching labels/{train,val,test}, and data.yaml. Configure deterministic split ratios and either copy images or create absolute local symlinks. The destination must be new or empty, and it is published only after the full export succeeds. See the Ultralytics Export Guide.
- Installed Python Plugins
Add trusted command plugins from separately installed Python distributions without editing labelImg++ source. Review and enable them under Tools → Plugins…; changes take effect after restart. Plugins use a versioned public API with host-owned actions, namespaced shortcuts and settings, bounded background work, read-only document state, diagnostics, and LABELIMGPP_DISABLE_PLUGINS=1 recovery. See the Plugin Authoring Guide.
- Brightness Adjustment
Adjust image brightness on-the-fly to better see annotations on dark or light images.
- Dark Mode Theme
Choose between light and dark themes for comfortable annotation in any lighting condition.
Press Ctrl+Shift+T to toggle between themes
Theme preference automatically saved
All UI components (canvas, gallery, dialogs) respect the active theme
See Dark Mode Documentation for detailed information
- SAM-Assisted Segmentation (optional)
Click once on an object to auto-generate a polygon, traced from a Segment-Anything mask. Install the optional extra and toggle SAM Segment:
pip install labelimgplusplus[sam]Runs the lightweight MobileSAM model on ONNX Runtime as a CPU-friendly extra with no PyTorch dependency. The default model pair is downloaded and checksum-verified on first use. Point Tools → SAM Settings… at your own exported encoder/decoder pair to use a different SAM variant. Without the extra installed, the action stays disabled (with an install hint) and nothing else changes.
- Smart Video Annotation (optional)
Open local MP4, MOV, MKV, and AVI video, annotate on exact presentation timestamps, interpolate rectangle keyframes, and propagate rectangles with reviewable optical-flow suggestions. Video work is stored in a sibling <video>.labelimgpp.sqlite project; existing image annotations and formats are unchanged.
pip install labelimgplusplus[video]The timeline supports frame stepping, exact timecode seeks, variable-rate media, playback without audio, track markers, and verified-frame markers. Accepted frames export to VOC, YOLO, YOLO-seg, COCO, or CreateML. See the Smart Video Annotation Guide for the project, review, and export workflow.
Installation
labelImg++ requires Python 3.8 or newer.
From PyPI (Recommended)
Note: The command was renamed from labelImgPlusPlus to labelimgpp in v2.1.1. The old command still works but shows a deprecation warning.
pip3 install labelimgplusplus
labelimgpp
Or use the full command name:
labelimgplusplus
With a specific image or directory:
labelimgpp [IMAGE_PATH] [PRE-DEFINED CLASS FILE] [SAVE_DIR]
The first positional path can also be a local video or a .labelimgpp.sqlite video project. Optional features can be combined:
pip install labelimgplusplus[sam,video]
Build from Source
Ubuntu/Linux:
sudo apt-get install pyqt5-dev-tools
pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImgPlusPlus.py
macOS:
pip3 install pyqt5 lxml
make qt5py3
python3 labelImgPlusPlus.py
Windows:
pip install pyqt5 lxml
pyrcc5 -o libs/resources.py resources.qrc
python labelImgPlusPlus.py
Quick Start
Open images: Click the file dropdown button or press Ctrl+U to load a directory
Create annotations: Press W or click Create RectBox, then drag to draw
Label objects: Select a class from the popup dialog
Save: Press Ctrl+S to save annotations
Navigate: Use D (next) and A (previous) to move between images
Review: Press Ctrl+G for gallery mode to review all annotations
For video, press Ctrl+Alt+V, draw a rectangle or polygon on the paused frame, then use the Tracks tab and Tools menu to add keyframes, track, review suggestions, and export accepted frames.
Supported Annotation Formats
Format |
Extension |
Annotation support |
|---|---|---|
PASCAL VOC |
.xml |
Bounding boxes and the labelImg++ polygon extension |
YOLO (bbox) |
.txt |
Normalized bounding boxes, with classes.txt for class names |
CreateML |
.json |
Bounding boxes in Apple’s CreateML annotation format |
COCO |
.json |
Bounding boxes, polygon segmentation, and keypoints |
YOLO-seg |
.txt |
Normalized polygons; rectangles are written as four-point polygons |
Polygon drawing and editing are available in the application. Saving polygons as YOLO bounding boxes or CreateML warns before converting each polygon to its enclosing box. Keypoints are preserved by COCO; the other formats do not encode them.
Keyboard Shortcuts
These are the defaults. They can be changed from Help → Keyboard Shortcuts.
File Operations
Ctrl + O |
Open file |
Ctrl + Alt + V |
Open video or video project |
Ctrl + U |
Open directory |
Ctrl + R |
Change save directory |
Ctrl + S |
Save current annotation |
Ctrl + Y |
Cycle annotation format |
Ctrl + Shift + S |
Save as |
Navigation
D |
Next image |
A |
Previous image |
Ctrl + G |
Toggle Gallery Mode |
In video mode, A/D step exact frames, Ctrl+Space toggles playback, Shift+K adds a keyframe to the selected track, T/Shift+T track forward or backward, and Shift+Enter/Backspace accept or reject the current suggestion. Space continues to verify the current frame.
Annotation
W |
Create bounding box |
P |
Create polygon |
K |
Enter keypoint mode |
Ctrl + Z |
Undo |
Ctrl + Shift + Z |
Redo |
Ctrl + D |
Duplicate selected box |
Del |
Delete selected box |
Space |
Mark image as verified |
Arrow keys |
Move selected box |
View
Ctrl + + |
Zoom in |
Ctrl + - |
Zoom out |
Ctrl + F |
Fit window |
Ctrl + Shift + F |
Fit width |
Ctrl + Shift + T |
Toggle dark mode theme |
Configuration
Predefined Classes
Edit data/predefined_classes.txt to customize the label options:
dog
cat
person
car
bicycle
Reset Settings
If you encounter issues, reset the settings:
rm ~/.labelImgSettings.json
Or use Menu > File > Reset All
Release History
This source tree identifies itself as 3.2.0, the stable 3.2 release. See the release history for version-by-version changes and GitHub Releases for published artifacts.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (git checkout -b feature/amazing-feature)
Commit your changes (git commit -m 'Add amazing feature')
Push to the branch (git push origin feature/amazing-feature)
Open a Pull Request
License
Based on LabelImg by Tzutalin.
Acknowledgments
Original LabelImg by Tzutalin
Feather Icons for modern iconography
All contributors and users of labelImg++
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 labelimgplusplus-3.2.0.tar.gz.
File metadata
- Download URL: labelimgplusplus-3.2.0.tar.gz
- Upload date:
- Size: 309.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21f267c6fa938b50b4994a8c74ac6511942b73c4a653d4a5bc567c677fd872fd
|
|
| MD5 |
ae78ad08a58e60f2e46bdcfca5908810
|
|
| BLAKE2b-256 |
cb8028be22d1e36c8440e41843135f80b8589cbf4a2e06f4cf28256629bf7b10
|
Provenance
The following attestation bundles were made for labelimgplusplus-3.2.0.tar.gz:
Publisher:
ci.yaml on abhiksark/labelImg-plus-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
labelimgplusplus-3.2.0.tar.gz -
Subject digest:
21f267c6fa938b50b4994a8c74ac6511942b73c4a653d4a5bc567c677fd872fd - Sigstore transparency entry: 2424138348
- Sigstore integration time:
-
Permalink:
abhiksark/labelImg-plus-plus@48bd426652a71de4471fca11fe7f22de0cf4c53d -
Branch / Tag:
refs/tags/v3.2.0 - Owner: https://github.com/abhiksark
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@48bd426652a71de4471fca11fe7f22de0cf4c53d -
Trigger Event:
push
-
Statement type:
File details
Details for the file labelimgplusplus-3.2.0-py3-none-any.whl.
File metadata
- Download URL: labelimgplusplus-3.2.0-py3-none-any.whl
- Upload date:
- Size: 329.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccb19cae0ec2ce7abab947cfad8f513a390e25b83f1236b9006807f84883f1f0
|
|
| MD5 |
f5701d0a9a5ee33536506eb1729ec8c2
|
|
| BLAKE2b-256 |
94f23c2311c9dfffe3102ef1ca3bdcc915cf21a869874f9c1a472e2597cc9115
|
Provenance
The following attestation bundles were made for labelimgplusplus-3.2.0-py3-none-any.whl:
Publisher:
ci.yaml on abhiksark/labelImg-plus-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
labelimgplusplus-3.2.0-py3-none-any.whl -
Subject digest:
ccb19cae0ec2ce7abab947cfad8f513a390e25b83f1236b9006807f84883f1f0 - Sigstore transparency entry: 2424138361
- Sigstore integration time:
-
Permalink:
abhiksark/labelImg-plus-plus@48bd426652a71de4471fca11fe7f22de0cf4c53d -
Branch / Tag:
refs/tags/v3.2.0 - Owner: https://github.com/abhiksark
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@48bd426652a71de4471fca11fe7f22de0cf4c53d -
Trigger Event:
push
-
Statement type: