![]() |
OpenCV 4.12.0
开源计算机视觉
|
下一个教程: 使用方形棋盘进行相机标定
| 原始作者 | Laurent Berger |
| 兼容性 | OpenCV >= 3.0 |
本教程的目标是学习如何创建标定图案。
你可以在 https://github.com/opencv/opencv/blob/4.x/doc/pattern.png 找到棋盘图案
你可以在 https://github.com/opencv/opencv/blob/4.x/doc/acircles_pattern.png 找到圆圈板图案
你可以在 https://github.com/opencv/opencv/blob/4.x/doc/charuco_board_pattern.png 找到 ChAruco 板图案(7X5 ChAruco 板,正方形尺寸:30 毫米,标记尺寸:15 毫米,aruco 字典:DICT_5X5_100,页面宽度:210 毫米,页面高度:297 毫米)
现在,如果你想创建自己的图案,你需要使用 python 来使用 https://github.com/opencv/opencv/blob/4.x/doc/pattern_tools/gen_pattern.py
示例
在文件 chessboard.svg 中创建一个棋盘图案,具有 9 行,6 列和 20 毫米的正方形尺寸
python gen_pattern.py -o chessboard.svg --rows 9 --columns 6 --type checkerboard --square_size 20
在文件 circleboard.svg 中创建一个圆圈板图案,具有 7 行,5 列和 15 毫米的半径
python gen_pattern.py -o circleboard.svg --rows 7 --columns 5 --type circles --square_size 15
在文件 acircleboard.svg 中创建一个圆圈板图案,具有 7 行,5 列,10 毫米的正方形尺寸,以及更小的圆圈间距
python gen_pattern.py -o acircleboard.svg --rows 7 --columns 5 --type acircles --square_size 10 --radius_rate 2
创建一个 radon 棋盘,用于 findChessboardCornersSB(),标记位于 (7 4),(7 5),(8 5) 单元格中
python gen_pattern.py -o radon_checkerboard.svg --rows 10 --columns 15 --type radon_checkerboard -s 12.1 -m 7 4 7 5 8 5
在 charuco_board.svg 中创建一个 ChAruco 板图案,具有 7 行,5 列,30 毫米的正方形尺寸,15 毫米的 aruco 标记尺寸,并使用 DICT_5X5_100 作为 aruco 标记的字典(它包含在 DICT_ARUCO.json 文件中)
python gen_pattern.py -o charuco_board.svg --rows 7 --columns 5 -T charuco_board --square_size 30 --marker_size 15 -f DICT_5X5_100.json.gz
如果想更改测量单位,请使用 -u 选项(例如 mm,英寸,px,m)
如果想更改页面尺寸,请使用 -w(宽度)和 -h(高度)选项
如果想为 ChAruco 板使用自己的字典,请指定你的字典文件名。例如
python gen_pattern.py -o charuco_board.svg --rows 7 --columns 5 -T charuco_board -f my_dictionary.json
你可以使用 opencv/samples/cpp/aruco_dict_utils.cpp 中提供的实用程序,在 my_dictionary.json 文件中生成你的字典,包含 30 个标记,标记大小为 5 位。
bin/example_cpp_aruco_dict_utils.exe my_dict.json -nMarkers=30 -markerSize=5