from pathlib import Path import cv2 as cv import numpy as np IMAGE_DIR = Path("calibration") OUTPUT_PATH = Path("calibration.npz") PATTERN_SIZE = (7, 6) SQUARE_SIZE = 25.0 MIN_FRAMES = 10 image_paths = sorted( path for path in IMAGE_DIR.iterdir() if path.suffix.lower() in {".jpg", ".jpeg", ".png", ".tif", ".tiff"} ) if not image_paths: raise SystemExit(f"no calibration images found in {IMAGE_DIR}") columns, rows = PATTERN_SIZE object_template = np.zeros((rows * columns, 3), np.float32) object_template[:, :2] = np.mgrid[0:columns, 0:rows].T.reshape(-1, 2) object_template *= SQUARE_SIZE