OpenCV 4.10.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
您可以在以下位置找到 ChAruco 板模板:https://github.com/opencv/opencv/blob/4.x/doc/charuco_board_pattern.png(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() 创建一个 radon 棋盘格,并在 (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 选项(毫米、英寸、像素、米)
如果您想更改页面大小,请使用 -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