下一个教程 : 使用方形棋盘标定相机
原作者 | 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
为 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 毫米,aruco 标记尺寸为 15 毫米,并使用 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 选项(毫米、英寸、像素、米)
如果要更改页面大小,请使用 -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/aruc_dict_utils.cpp,在 my_dictionary.json 文件中生成字典,标记数为 30,标记大小为 5 位。
bin/example_cpp_aruco_dict_utils.exe my_dict.json -nMarkers=30 -markerSize=5