58 lines
2.4 KiB
Markdown
58 lines
2.4 KiB
Markdown
<div style="display:flex; gap:16px; align-items:center;">
|
|
<img src="app/assets/logo.png" alt="ICRA" width="140"/>
|
|
<div>
|
|
<strong>Interactive Color Range Analyzer (ICRA)</strong><br/>
|
|
A fully-featured, PySide6-powered desktop application for precise color matching, image analysis, and statistics generation.
|
|
</div>
|
|
</div>
|
|
|
|
## 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](https://github.com/astral-sh/uv) for dependency management
|
|
- Works across Windows, macOS, and Linux (requires PySide6 and numpy)
|
|
|
|
## Setup with uv
|
|
```bash
|
|
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`.
|
|
```bash
|
|
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!
|