Professional computer vision annotation tool with AI assistance
Project description
wxCvAnnotator
Industrial-Grade AI-Assisted Image Annotation Tool
wxCvAnnotator is a high-performance desktop annotation tool built on wxPython and a C++ OpenCV engine (wxCvModule). It is optimized for industrial vision workflows, offering smooth navigation of high-resolution images alongside AI-powered annotation assistance.
✨ Features
Annotation Tools
A complete set of geometric drawing tools for various computer vision tasks:
| Tool | Description | Use Case |
|---|---|---|
| Rectangle | Standard bounding box | Object Detection |
| Rotated Rectangle | Angle-aware bounding box | Industrial AOI, OBB |
| Polygon | Arbitrary shape contour | Instance Segmentation |
| Circle / Annulus | Circular and ring-shaped annotations | Geometric Feature Labeling |
| Point | Single keypoint | Pose Estimation |
AI-Assisted Annotation
Integrated deep learning models to dramatically accelerate labeling:
- Segment Anything (SAM / SAM 2 / EfficientSAM): Click on an object to instantly generate a precise mask and polygon contour. ONNX quantized models (40 MB–600 MB) are automatically downloaded from HuggingFace on first use.
Data Formats & Management
- Storage: LabelMe JSON format by default (one
.jsonper image), fully compatible with existing LabelMe datasets. - Export: YOLO TXT, COCO JSON, Pascal VOC XML, CSV.
- Label Management: Three-level label loading (Project → Global → Default), custom colors, and Batch Rename.
- Attribute Panel: Attach
flags(boolean), custom key-value attributes, and transcription text to each annotation.
Interface & Experience
- Large Image Support: C++ rendering engine optimized for high-resolution images — smooth zoom and pan.
- Three-Panel Layout: Toolbar (left) → Canvas (center) → Instance List (right).
- Resizable Panels: Drag splitters to adjust panel widths; layout is remembered across sessions.
- Multilingual: UI supports English, Traditional Chinese, and Japanese.
- Theme Switching: Built-in Light / Dark themes with custom color scheme support.
📦 Installation
Prerequisites
All platforms require wxCvModule (the C++ rendering engine) to be installed first:
# Install from PyPI (if a wheel is available for your platform)
pip install wxcvmodule
# Or install manually from the Releases page
pip install wxcvmodule-*.whl
If wxCvModule is not installed, the application will start in Mock mode — some C++ rendering features will be disabled, but the Python UI remains functional.
Windows
Tested on: Windows 10/11 x64
1. Install Python 3.10+
Download from python.org. Make sure to check Add Python to PATH during installation.
2. Install wxCvModule
pip install wxcvmodule
3. Install wxCvAnnotator
pip install wxcvannotator
4. Launch
wxcv-annotator
Optional — NVIDIA GPU acceleration:
pip install onnxruntime-gpu
macOS
Tested on: macOS arm64 (Apple Silicon), Python 3.12
1. Install pyenv (recommended)
brew install pyenv
Add to ~/.zshrc:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
2. Install Python 3.12
pyenv install 3.12.12
pyenv local 3.12.12
3. Install wxCvModule
pip install wxcvmodule
# If no macOS wheel is available on PyPI, download manually from the Releases page:
pip install wxcvmodule-*.macosx-*.whl
4. Install and launch
pip install wxcvannotator
wxcv-annotator
macOS notes:
objc[] duplicate classwarnings at startup are a known issue and do not affect functionality — they can be safely ignored.- Do not run
python -c "import wxCvModule"directly in the shell; always launch viawxcv-annotator.
Linux
Tested on: Ubuntu 22.04 x64
1. Install system dependencies
sudo apt-get update
sudo apt-get install -y python3.12 python3.12-pip python3-dev \
libgtk-3-dev libgl1-mesa-glx libglib2.0-0
2. Install wxCvModule
pip install wxcvmodule
3. Install and launch
pip install wxcvannotator
wxcv-annotator
Optional — NVIDIA CUDA GPU acceleration:
pip install onnxruntime-gpu
Developer Install
git clone https://github.com/wxCvRoot/wxCvAnnotator.git
cd wxCvAnnotator
pip install -e .
wxcv-annotator
Launch Options
wxcv-annotator # Standard launch (after install)
wxcv-annotator /path/to/image.jpg # Open a specific image
wxcv-annotator /path/to/folder/ # Open a folder
python -m wxcvannotator # Module mode
python main.py # Dev launcher
Verify Installation
python -c "
import wx; print(f'wxPython: {wx.version()}')
import numpy; print(f'numpy: {numpy.__version__}')
import cv2; print(f'opencv: {cv2.__version__}')
try:
import onnxruntime; print(f'onnxruntime: {onnxruntime.__version__}')
except ImportError:
print('onnxruntime: not installed (AI features disabled)')
import wx; import wxCvModule; print('wxCvModule: OK')
import wxcvannotator; print(f'wxcvannotator: {wxcvannotator.__version__}')
"
🔄 Basic Workflow
- Open image: Go to
File > Open ImageorFile > Open Folder, or drag and drop an image onto the window. - Select tool: Click an annotation tool in the left toolbar (Rectangle, Polygon, Rotated Rect, etc.).
- Draw: Click or drag on the canvas to draw the shape.
- Add to list: Press Enter or click [➕ Add] in the toolbar. Set the label in the dialog and confirm.
- Edit: Click an annotation in the right-side list, adjust it on the canvas, then press Enter to update.
- Attributes: With an annotation selected, use the bottom panel to edit flags, custom key-value attributes, and transcription text.
- Auto-save: Annotations are automatically saved as a
.jsonfile (LabelMe format) alongside the image.
🤖 AI-Assisted Annotation
Workflow
- Select AI Polygon or AI Mask from the left toolbar.
- Choose a model from the Model dropdown:
- EfficientSAM — Speed-first; ideal for real-time annotation.
- SAM / SAM 2 — Accuracy-first; best for complex boundaries.
- Click on the image to add prompt points:
- Left-click (green dot): Positive prompt — include this area.
- Right-click (red dot): Negative prompt — exclude this area.
- Backspace: Remove the last prompt point.
- A preview polygon updates in real time after each click.
- Finalize:
- Press Enter or double left-click: Confirm and add to the list.
- Double right-click: Remove the last prompt point.
First use: The selected model will be automatically downloaded from HuggingFace when you first click. Ensure you have an internet connection. Download progress is shown in the status bar.
📤 Dataset Export
Single Image Export
Go to Export > Export Current Image..., choose the target format, and confirm. The output file is saved in the same directory as the image.
Dataset Split Export
Go to Export > Export Dataset (Split)... to configure:
- Honor manual status: Images marked as
train/val/testin the file list are assigned to those splits first. - Adjust ratios: Set train/val/test split ratios for unmarked images using sliders.
- Copy images: Choose whether to copy the actual image files to produce a standalone dataset package.
Supported formats:
| Format | Description |
|---|---|
| YOLO TXT | YOLOv5/v8/v11 — supports det / seg / obb |
| COCO JSON | Standard COCO format — supports detection and segmentation |
| Pascal VOC XML | Classic XML format for Detectron2 and similar frameworks |
| CSV | Lightweight general-purpose format |
⌨️ Keyboard Shortcuts
| Key | Action |
|---|---|
S |
Switch to Select / Edit mode |
P |
Polygon tool |
R |
Rotated Rectangle tool |
Enter |
Add / Update annotation |
Esc |
Cancel current drawing |
Delete |
Delete selected annotation |
| Scroll wheel | Zoom image |
| Middle-click / Hold Space | Pan image |
| Double left-click (AI mode) | Confirm AI prediction |
| Double right-click (AI mode) | Remove last prompt point |
🛠️ System Requirements
| Item | Minimum |
|---|---|
| Python | 3.10+ |
| wxPython | 4.2.0+ |
| OS | Windows 10+, macOS 12+, Ubuntu 20.04+ |
| RAM | 4 GB (8 GB+ recommended for AI features) |
| Disk | < 100 MB base; AI models add 40 MB–600 MB |
🔗 FAQ
Q: wxcv-annotator command not found after install?
Make sure Python's
Scriptsdirectory is in your PATH. On Windows, trypython -m wxcvannotator.
Q: ModuleNotFoundError: No module named 'wx'?
pip install wxPython
Q: AI annotation is unavailable?
Install
onnxruntime:pip install onnxruntime # CPU pip install onnxruntime-gpu # NVIDIA GPU
Q: Application starts in Mock mode?
wxCvModuleis not correctly installed. Verify with:pip show wxcvmodule
Q: objc[] duplicate class warnings on macOS?
This is a known issue caused by both
cv2andwxCvModulebundling their own OpenCV dynamic libraries. It does not affect functionality and can be ignored.
⚖️ License
This project is licensed under the Apache License 2.0.
Copyright 2026 wxCvRoot
See the LICENSE file for full terms.
This project makes use of the following open-source components:
- OpenCV — Apache 2.0
- wxWidgets — wxWindows Licence
- Segment Anything (SAM) — Apache 2.0
- EfficientSAM — Apache 2.0
Maintained by wxCvRoot
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 wxcvannotator-0.1.0.tar.gz.
File metadata
- Download URL: wxcvannotator-0.1.0.tar.gz
- Upload date:
- Size: 452.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c6150b3cc9225be69d082bb53268527bf558b1a2883f46d5e99918b9138b693
|
|
| MD5 |
2e88370743e898f3781961605d3df3b8
|
|
| BLAKE2b-256 |
675c3ea4296f1c0b65b042f80efa48d7fee4d6ebd603814c5da7bee595c882cf
|
Provenance
The following attestation bundles were made for wxcvannotator-0.1.0.tar.gz:
Publisher:
publish.yml on wxCvRoot/wxCvAnnotator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wxcvannotator-0.1.0.tar.gz -
Subject digest:
6c6150b3cc9225be69d082bb53268527bf558b1a2883f46d5e99918b9138b693 - Sigstore transparency entry: 975881959
- Sigstore integration time:
-
Permalink:
wxCvRoot/wxCvAnnotator@b6278e77708b54a18e70d68c23c398cd4a9f69bc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/wxCvRoot
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b6278e77708b54a18e70d68c23c398cd4a9f69bc -
Trigger Event:
release
-
Statement type:
File details
Details for the file wxcvannotator-0.1.0-py3-none-any.whl.
File metadata
- Download URL: wxcvannotator-0.1.0-py3-none-any.whl
- Upload date:
- Size: 514.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9d184e79658f38ba62b94911e8a02d69dac54a050d16ca15b56e264f18e3766
|
|
| MD5 |
448defaad1d6756b44b805863afc920f
|
|
| BLAKE2b-256 |
9b8fb90af4a308634a5209f6a11a6351351d25ab28132151504098b82a2761a4
|
Provenance
The following attestation bundles were made for wxcvannotator-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on wxCvRoot/wxCvAnnotator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wxcvannotator-0.1.0-py3-none-any.whl -
Subject digest:
a9d184e79658f38ba62b94911e8a02d69dac54a050d16ca15b56e264f18e3766 - Sigstore transparency entry: 975881960
- Sigstore integration time:
-
Permalink:
wxCvRoot/wxCvAnnotator@b6278e77708b54a18e70d68c23c398cd4a9f69bc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/wxCvRoot
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b6278e77708b54a18e70d68c23c398cd4a9f69bc -
Trigger Event:
release
-
Statement type: