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