ArUco and AprilTag dictionaries
OpenCV ships 21 predefined dictionaries. They differ in how many bits a marker carries, how many markers exist, and how many misread bits the decoder can repair.
Bits, counts and repair budgets below come from OpenCV. Range is for a 100 mm marker on a camera 1920 px wide, 60 degree horizontal field of view.
| Dictionary | Bits | Markers | Bits repaired | Range, 100 mm marker |
|---|---|---|---|---|
| 4x4_50 | 4×4 | 50 | 1 | 2.3 m |
| 4x4_100 | 4×4 | 100 | 1 | 2.3 m |
| 4x4_250 | 4×4 | 250 | 1 | 2.3 m |
| 4x4_1000 | 4×4 | 1000 | 0 | 2.3 m |
| 5x5_50 | 5×5 | 50 | 3 | 2.0 m |
| 5x5_100 | 5×5 | 100 | 3 | 2.0 m |
| 5x5_250 | 5×5 | 250 | 2 | 2.0 m |
| 5x5_1000 | 5×5 | 1000 | 2 | 2.0 m |
| 6x6_50 | 6×6 | 50 | 6 | 1.7 m |
| 6x6_100 | 6×6 | 100 | 5 | 1.7 m |
| 6x6_250 | 6×6 | 250 | 5 | 1.7 m |
| 6x6_1000 | 6×6 | 1000 | 4 | 1.7 m |
| 7x7_50 | 7×7 | 50 | 9 | 1.5 m |
| 7x7_100 | 7×7 | 100 | 8 | 1.5 m |
| 7x7_250 | 7×7 | 250 | 8 | 1.5 m |
| 7x7_1000 | 7×7 | 1000 | 6 | 1.5 m |
| AprilTag 16h5 | 4×4 | 30 | 2 | 2.3 m |
| AprilTag 25h9 | 5×5 | 35 | 4 | 2.0 m |
| AprilTag 36h10 | 6×6 | 2320 | 4 | 1.7 m |
| AprilTag 36h11 | 6×6 | 587 | 5 | 1.7 m |
| ArUco MIP 36h12 | 6×6 | 250 | 5 | 1.7 m |
How to choose
Fewer bits read from further away. More bits hold more markers and repair more damage. Within a family, take the smallest marker count that covers the IDs you need, because a smaller dictionary repairs more bits.