- Parallelized folder export for massive speedup - Implemented exclusion mask caching - Fixed statistics discrepancy by scaling exclusion coordinates - Hardcoded CSV format to semicolon separator and comma decimal - Defaulted file/folder dialogs to images/ directory - Added unit test for coordinate scaling |
||
|---|---|---|
| app | ||
| images | ||
| tests | ||
| .gitignore | ||
| README.md | ||
| config.toml | ||
| main.py | ||
| pyproject.toml | ||
README.md
Interactive Color Range Analyzer (ICRA)
A fully-featured, PySide6-powered desktop application for precise color matching, image analysis, and statistics generation.
A fully-featured, PySide6-powered desktop application for precise color matching, image analysis, and statistics generation.
Features
- High-Performance Image Processing: Native, vectorized NumPy operations for lightning-fast HSV conversion and color matching.
- Batch Folder Processing: Load a folder of images and instantly export an aggregated
icra_stats.csvwith localized formatting (dot or comma decimals depending on your language). - Eyedropper Tool: Quickly pick target matching colors directly from the image canvas.
- Advanced Selection: Support for exclusion zones (rectangles and free-draw polygons) overlaid on the image, all dynamically rendered via
QGraphicsView. - Modern UI & UX:
- Drag-and-drop support for files and folders.
- Custom dark and light themes with native-feeling borderless titlebars and a categorized menu bar.
- Window size and position persistence between launches.
- Keyboard shortcuts for rapid workflow.
- Configurable: Uses
config.tomlto drive everything from overlay matching colors to default sliders and application language (en/de).
Requirements
- Python 3.11+
- uv for dependency management
- Works across Windows, macOS, and Linux (requires PySide6 and numpy)
Setup with uv
git clone https://git.lukasmahler.de/lm/ICRA.git
cd ICRA
uv venv
source .venv/Scripts/activate # macOS/Linux: source .venv/bin/activate
uv pip install .
uv run icra
Running the Test Suite
The core image processing logic and UI data models are rigorously tested using pytest.
uv run pytest tests/ -v
Project Layout
app/
assets/ # Shared branding
lang/ # Localization strings (TOML format)
logic/ # Configuration loading and application constants
qt/ # PySide6 implementation (main_window, custom UI widgets, vectorized image processing)
tests/ # Pytest unit tests
config.toml # Configurable overlay colors, slider defaults
main.py # Entry point -> PySide6 launcher
Development Notes
- The legacy
Tkintercodebase has been completely removed in favor ofPySide6. - Quick syntax check:
uv run python -m compileall app main.py - Contributions welcome!