Go to file
lukas 7f219885bf Feature: Advanced Navigation & Composite Scoring
- Added direct pattern jump input field (Ctrl+J behavior without hotkey)

- Implemented Composite Score: 35% match, 55% excl match, 10% brightness

- Added 'Prefer darkness' toggle to invert brightness score

- Added checkmarks to 'Prefer darkness' and 'Toggle free-draw' menus

- Added dynamic Darkness/Brightness text parsing to UI and CSV export
2026-03-11 14:48:24 +01:00
app Feature: Advanced Navigation & Composite Scoring 2026-03-11 14:48:24 +01:00
images Improve performance, UX, and code quality 2026-03-10 16:07:52 +01:00
tests Optimize: export speed, fix scaling bug, and improve workflow 2026-03-10 17:59:49 +01:00
.gitignore Update .gitignore 2026-03-10 17:33:42 +01:00
README.md Docs: rewrite README.md for complete PySide6 transition 2026-03-10 16:56:01 +01:00
config.toml Replace toolbar with categorized menu system, standardize 'color', and improve CSV export 2026-03-10 16:54:23 +01:00
main.py Refactor app layout and load defaults from config 2025-10-15 18:16:18 +02:00
pyproject.toml Replace toolbar with categorized menu system, standardize 'color', and improve CSV export 2026-03-10 16:54:23 +01:00

README.md

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!