Calibr

ChArUco Board, print-ready.

calibrx.io · 7×5 squares · 25/18 mm · DICT_6X6_250

ChArUco generator

ChArUco board generator

Create a ChArUco calibration board in exact millimetres: choose the OpenCV ArUco dictionary, the number of squares, the square and marker size and the first marker ID, then download a print-ready PDF, SVG or PNG. The board detects as-is in OpenCV and in CalibrX.

When to use it

When to use a ChArUco board

A ChArUco board is a checkerboard with an ArUco marker in every white square. The markers give each corner an identity, so the detector can still use a board that runs off the edge of the frame, sits at a steep angle or is partly covered.

Those are exactly the views that matter most for lens distortion: the corners and edges of the image. That makes ChArUco the best default for calibrating pinhole, wide-angle and fisheye lenses.

Recommended ChArUco settings and why they work.
SettingRecommendedWhy
Squares7 × 5 on A4 (the default), 10 × 7 on A3A 7 × 5 board gives 24 corners per view while the squares stay large enough to detect from a distance.
Square size25 mm on A4, 35–40 mm on A3Bigger squares detect from farther away; the board must still fit the page at 100% scale.
Marker sizeAbout 70–75% of the square (18 mm on 25 mm)Leaves a white border around each marker so markers and corners do not merge.
DictionaryDICT_5X5_100 or DICT_6X6_250It needs at least as many IDs as markers (17 on a 7 × 5 board). Coarser 5 × 5 markers read from farther away.
Start ID0Change it only to tell two boards apart in the same scene.

Detect it

Detect a ChArUco board with OpenCV

python
import cv2

dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_6X6_250)
# 7 x 5 squares, 25 mm squares, 18 mm markers (lengths in metres)
board = cv2.aruco.CharucoBoard((7, 5), 0.025, 0.018, dictionary)
detector = cv2.aruco.CharucoDetector(board)

gray = cv2.imread("view.jpg", cv2.IMREAD_GRAYSCALE)
corners, ids, marker_corners, marker_ids = detector.detectBoard(gray)
print(0 if ids is None else len(ids), "ChArUco corners found")

OpenCV 4.7 or later. Use the numbers printed under the board you downloaded. Or skip the code: upload your photos to CalibrX and it detects the board and calibrates the camera for you.

FAQ

ChArUco — common questions

Which ArUco dictionary should I use for a ChArUco board?

Any dictionary with at least as many IDs as the board has markers. DICT_5X5_100 and DICT_6X6_250 are the usual choices: 5 × 5 markers have larger cells and read from farther away, 6 × 6 offers more IDs for big boards. Detect with the same dictionary you printed.

Can I calibrate a fisheye lens with a ChArUco board?

Yes, and it is the best target for it. Fisheye images curve strongly towards the edges, where a plain checkerboard often fails to detect; a ChArUco board still yields every visible corner. CalibrX solves pinhole, wide-angle and fisheye models from the same photos.

How many photos of the board do I need?

Around 15 to 30 sharp views that together cover the whole image — centre, edges and corners — with the board tilted up to about 45°. Views near the image edges improve the distortion estimate more than extra views of the centre.

More targets

Other calibration boards

Checkerboard

Checkerboard generator

The classic chessboard target, with exact rows, columns and square size for OpenCV and MATLAB.

ArUco

ArUco marker generator

Single markers or grid boards from the real OpenCV dictionaries, for tracking and pose estimation.

Circle grid

Circle grid generator

Asymmetric or symmetric dot patterns whose centres stay accurate in slightly soft images.

These targets follow the pattern geometry used by OpenCV. Read the official OpenCV calibration-pattern guide or continue with the CalibrX online calibration workflow.

Reviewed by the CalibrX engineering team · Updated September 2026.