# Multi-Projector Blending System

This project provides a software solution for blending images from two projectors to create a seamless wide-screen display. It includes tools for image splitting, edge blending (linear, quadratic, Gaussian), and a simulation for auto-calibration using feature detection.

## Prerequisites

- Python 3.8 or higher
- A webcam (for calibration features)
- 2 Projectors

## Installation

It is recommended to use a virtual environment to manage dependencies.

1.  **Create a Virtual Environment**

    ```bash
    python -m venv venv
    ```

2.  **Activate the Virtual Environment**

    -   **macOS/Linux:**
        ```bash
        source venv/bin/activate
        ```
    -   **Windows:**
        ```bash
        .\venv\Scripts\activate
        ```

3.  **Install Dependencies**

    ```bash
    pip install -r requirements.txt
    ```

## Running the Application

1.  **Prepare Input Image**
    Ensure you have an image named `input.png` in the project directory. This image will be used for splitting and blending.

2.  **Start the UI**
    Run the main user interface script:

    ```bash
    python ui.py
    ```

3.  **Using the Interface**
    -   **Overlap (px):** Adjust the pixel width of the overlapping region between the two projectors.
    -   **Blend Mode:** Select the blending algorithm (`linear`, `quadratic`, or `gaussian`).
    -   **Left/Right Fullscreen:** Opens a fullscreen window for the respective projector. Drag these windows to the appropriate physical projector displays.
    -   **Auto-Calibrate:** Simulates an auto-calibration process to adjust the overlap based on camera feedback (requires a camera).

## Configuration

The application uses a `config.ini` file to store settings. This file is automatically read on startup.

## Documentation

The code is documented using Doxygen-compatible comments. You can generate documentation using Doxygen if needed.
