OpenCV 4.11.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 mm,标记大小:15 mm,Aruco 字典:DICT_5X5_100,页面宽度:210 mm,页面高度:297 mm)

创建您自己的图案

现在,如果您想创建您自己的图案,您将需要使用 python 和 https://github.com/opencv/opencv/blob/4.x/doc/pattern_tools/gen_pattern.py

示例

在 chessboard.svg 文件中创建一个 9 行 6 列、方格大小为 20mm 的棋盘图案

    python gen_pattern.py -o chessboard.svg --rows 9 --columns 6 --type checkerboard --square_size 20

在 circleboard.svg 文件中创建一个 7 行 5 列、半径为 15 mm 的圆形棋盘图案

    python gen_pattern.py -o circleboard.svg --rows 7 --columns 5 --type circles --square_size 15

在 acircleboard.svg 文件中创建一个 7 行 5 列、方格大小为 10mm 且圆圈间距较小的圆形棋盘图案

    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 mm,Aruco 标记大小为 15 mm,并使用 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、英寸、像素、米)

如果您想更改页面大小,请使用 -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