ICRA/README.md

2.4 KiB

ICRA
Interactive Color Range Analyzer (ICRA)
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.csv with 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.toml to 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 Tkinter codebase has been completely removed in favor of PySide6.
  • Quick syntax check: uv run python -m compileall app main.py
  • Contributions welcome!