Camera Calibration Workbench is a PyQt6 + OpenCV desktop application for chessboard-based camera calibration, image undistortion, and pixel-to-world coordinate conversion.
It supports:
- standard pinhole camera calibration,
- OpenCV fisheye camera calibration,
- calibration parameter export/import,
- batch undistortion,
- fisheye scale tuning and principal-point offsets,
- coordinate conversion from pixel/depth to world coordinates.
- Friendly desktop UI with non-blocking background calibration tasks.
- Structured numeric controls for chessboard dimensions, grid size, fisheye scale, and principal-point offsets.
- Live runtime log capture from OpenCV calibration steps.
- JSON calibration parameter files.
- Optional automatic undistortion after calibration.
- Compatible launcher for the original
frontendapp_pyqt6.pyentry point. uv-based local environment setup.
Requirements:
- Python 3.10+
uv- Linux desktop environment capable of running Qt applications
Clone and run:
git clone https://github.com/Rosatus/CameraCalibrationWorkbench.git
cd CameraCalibrationWorkbench
./run_app.shThe launcher creates venv/ with uv when needed and installs the project in editable mode.
Manual setup:
uv venv venv
uv pip install --python venv/bin/python -e .
source venv/bin/activate
python -m camera_calibration_workbench- Choose a directory containing chessboard calibration images.
- Select camera type: standard or fisheye.
- Set inner corner count.
- Example: a 12 by 9 square board has 11 by 8 inner corners.
- Set the physical grid size in meters.
- Choose an output directory.
- Click Start Calibration.
The application writes:
calibration_params.json
undistorted_images/
when automatic undistortion is enabled.
For fisheye images, the UI exposes:
scale: adjusts the output field of view.dx,dy: offsets the principal point before saving parameters or undistorting.
Typical scale values:
0.8-0.9 preserves more visual content
1.0 default OpenCV-style output
>1.0 tighter view with more cropping
src/camera_calibration_workbench/
app.py PyQt6 desktop UI
calibrate.py OpenCV calibration and undistortion implementation
coordinate.py pixel/depth to world-coordinate conversion
workflow.py UI-friendly workflow helpers
tests/ backend regression tests
docs/ metric and usage notes
uv venv venv
uv pip install --python venv/bin/python -e ".[dev]"
source venv/bin/activate
pytestRun the application from source:
python -m camera_calibration_workbenchThis project is licensed under the GNU Affero General Public License v3.0 or later. See LICENSE.