SVG pattern generator for camera calibration (checkerboard, radon checkerboard, circles, asymmetric circles, charuco board), packaged as a Python library and CLI.
- 📦 PyPI package:
camera-calibration-patterns
- 🐍 Module:
camera_calibration_patterns
- 🖥️ CLI:
generate-pattern
Based on OpenCV’s gen_pattern.py
script, refactored and packaged as a standalone Python library + CLI.
pipx install camera-calibration-patterns
# then:
generate-pattern -h
pip install camera-calibration-patterns
pipx install "git+https://github.com/victor1234/[email protected]"
- Python >= 3.11
Generate a 9x7 checkerboard with 25 mm square size:
generate-pattern -T checkerboard -r 9 -c 7 -s 25 -u mm -o chess_9x7_25mm.svg
Generate a 4×11 radon checkerboard with 15 mm square size:
generate-pattern -T radon_checkerboard -r 15 -c 12 -s 15 -u mm -m 5 7 5 8 6 7 radon_15x12_15mm.svg
Generate a 15×6 asymmetric circle grid with 15 mm diameter:
generate-pattern -T acircles -r 15 -c 6 -s 15 -u mm -R 3 -o acircles_15x6_15mm.svg
Show all options:
generate-pattern -h
Tip: Print SVGs with no scaling to ensure square sizes match the specified units (
mm
/in
).
Flag | Description | Example |
---|---|---|
-o output |
Output SVG filename | -o pattern.svg |
-c columns |
Pattern columns | -c 9 |
-r rows |
Pattern rows | -r 7 |
-T {circles,acircles,checkerboard, radon_checkerboard,charuco_board} |
Pattern type | -T checkerboard |
-u {mm,inches,px,m} |
Units for size | -u mm |
-s square_size |
Size of squares in pattern | -s 20 |
-R radius_rate |
Circles_radius = square_size/radius_rate | -R 0.8 |
-w page_width |
Page width in units | -w 210 |
-h page_height |
Page height in units | -h 297 |
-a {A0,A1,A2,A3,A4,A5} |
Page size, supersedes -h -w arguments | -a A4 |
-m markers [markers ...] |
List of cells with markers for the radon checkerboard | -m 0 1 2 3 |
-p aruco_marker_size |
Size of ArUco markers | -p 10 |
-f dict_file |
file name of custom aruco dictionary for ChAruco pattern | -f custom_dict.yml |
-H |
Show help | -H |
This package is licensed under the Apache License 2.0 (see LICENSE).
This project includes code from:
gen_pattern.py
by OpenCV, licensed under the Apache License 2.0.svgfig.py
by Jim Pivarski — licensed under the BSD 3-Clause License.
The code has been modified and packaged as a Python library by Victor Kataev in 2025.