skycam
Camera-agnostic fisheye image projection library for ground-based sky observation
Documentation
|
|
| 🚀 Tutorial |
Project your first image in 5 minutes |
| 🛠️ How-To Guides |
Solve specific problems: batch processing, env config |
| 🧠 Concepts |
Understand the architecture and algorithm |
| 📚 Reference |
Complete API documentation |
Quick Install
Minimal Example
from pathlib import Path
from skycam.adapters import JP2CalibrationLoader, load_jp2
from skycam.domain.models import ProjectionSettings
from skycam.domain.projection import ProjectionService
# Load calibration and create projector
loader = JP2CalibrationLoader(Path("calibration"))
calibration = loader.load("visible")
projector = ProjectionService(
calibration=calibration,
settings=ProjectionSettings(),
)
# Project fisheye → regular grid
projected = projector.project(load_jp2(Path("input.jp2")))
Features
| Feature |
Description |
| ⚡ Numba JIT |
~100x speedup via compiled kernels |
| 💾 Coordinate Cache |
Sub-100ms init after first load |
| ✅ Pydantic v2 |
Validated settings with env support |
| 🏛️ Hexagonal Architecture |
Clean domain/adapters/config layers |
Get Started →