OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
用于鲁棒相机位姿估计的ArUco标记和棋盘检测

详细描述

ArUco标记检测 方形基准标记(也称为增强现实标记)可用于轻松、快速且鲁棒的相机位姿估计。

ArucoDetector类的主要功能是在图像中检测标记。如果标记被分组为棋盘,则可以使用ArucoDetector::refineDetectedMarkers()尝试恢复缺失的标记。ArUco标记也可用于高级棋盘角点查找。为此,请将标记分组到CharucoBoard中,并使用CharucoDetector::detectBoard()查找棋盘的角点。

该实现基于 R. Muñoz-Salinas 和 S. Garrido-Jurado 的 ArUco 库 [98]

还可以基于 AprilTag 2 [292] 基准检测方法检测标记。

另请参阅
[98] 此代码最初由 Sergio Garrido-Jurado 作为 2015 年 Google 代码之夏 (GSoC 15) 的项目开发。

类  cv::aruco::ArucoDetector
 ArucoDetector类的主要功能是使用detectMarkers()方法在图像中检测标记。更多…
 
类  cv::aruco::Board
 Board ArUco 标记的棋盘。更多…
 
类  cv::aruco::CharucoBoard
 ChArUco 棋盘是一个平面棋盘,其中标记放置在棋盘的白色方格内。更多…
 
类  cv::aruco::CharucoDetector
 
结构体  cv::aruco::CharucoParameters
 
结构体  cv::aruco::DetectorParameters
 结构体 DetectorParametersArucoDetector 使用 更多…
 
类  cv::aruco::Dictionary
 Dictionary 是一组大小相同的唯一 ArUco 标记。更多…
 
类  cv::aruco::GridBoard
 具有网格排列标记的平面棋盘。更多…
 
结构体  cv::aruco::RefineParameters
 结构体 RefineParametersArucoDetector 使用 更多…
 

枚举

枚举  cv::aruco::CornerRefineMethod {
  cv::aruco::CORNER_REFINE_NONE ,
  cv::aruco::CORNER_REFINE_SUBPIX ,
  cv::aruco::CORNER_REFINE_CONTOUR ,
  cv::aruco::CORNER_REFINE_APRILTAG
}
 
枚举  cv::aruco::PredefinedDictionaryType {
  cv::aruco::DICT_4X4_50 = 0 ,
  cv::aruco::DICT_4X4_100 ,
  cv::aruco::DICT_4X4_250 ,
  cv::aruco::DICT_4X4_1000 ,
  cv::aruco::DICT_5X5_50 ,
  cv::aruco::DICT_5X5_100 ,
  cv::aruco::DICT_5X5_250 ,
  cv::aruco::DICT_5X5_1000 ,
  cv::aruco::DICT_6X6_50 ,
  cv::aruco::DICT_6X6_100 ,
  cv::aruco::DICT_6X6_250 ,
  cv::aruco::DICT_6X6_1000 ,
  cv::aruco::DICT_7X7_50 ,
  cv::aruco::DICT_7X7_100 ,
  cv::aruco::DICT_7X7_250 ,
  cv::aruco::DICT_7X7_1000 ,
  cv::aruco::DICT_ARUCO_ORIGINAL ,
  cv::aruco::DICT_APRILTAG_16h5 ,
  cv::aruco::DICT_APRILTAG_25h9 ,
  cv::aruco::DICT_APRILTAG_36h10 ,
  cv::aruco::DICT_APRILTAG_36h11 ,
  cv::aruco::DICT_ARUCO_MIP_36h12
}
 预定义标记字典/集。更多…
 

函数

void cv::aruco::drawDetectedCornersCharuco (InputOutputArray image, InputArray charucoCorners, InputArray charucoIds=noArray(), Scalar cornerColor=Scalar(255, 0, 0))
 绘制一组 Charuco 角点。
 
void cv::aruco::drawDetectedDiamonds (InputOutputArray image, InputArrayOfArrays diamondCorners, InputArray diamondIds=noArray(), Scalar borderColor=Scalar(0, 0, 255))
 绘制一组检测到的 ChArUco 菱形标记。
 
void cv::aruco::drawDetectedMarkers (InputOutputArray image, InputArrayOfArrays corners, InputArray ids=noArray(), Scalar borderColor=Scalar(0, 255, 0))
 在图像中绘制检测到的标记。
 
Dictionary cv::aruco::extendDictionary (int nMarkers, int markerSize, const Dictionary &baseDictionary=Dictionary(), int randomSeed=0)
 使用新的 nMarkers 扩展基本字典。
 
void cv::aruco::generateImageMarker (const Dictionary &dictionary, int id, int sidePixels, OutputArray img, int borderBits=1)
 生成规范的标记图像。
 
Dictionary cv::aruco::getPredefinedDictionary (int dict)
 返回 DICT_* 引用的预定义字典之一。
 
Dictionary cv::aruco::getPredefinedDictionary (PredefinedDictionaryType name)
 返回在 PredefinedDictionaryType 中定义的预定义字典之一。
 

枚举类型文档

◆ CornerRefineMethod

#include <opencv2/objdetect/aruco_detector.hpp>

枚举器
CORNER_REFINE_NONE 
Python: cv.aruco.CORNER_REFINE_NONE

基于ArUco方法的标签和角点检测。

CORNER_REFINE_SUBPIX 
Python: cv.aruco.CORNER_REFINE_SUBPIX

ArUco方法,并使用亚像素精度细化角点位置。

CORNER_REFINE_CONTOUR 
Python: cv.aruco.CORNER_REFINE_CONTOUR

ArUco方法,并使用轮廓点线拟合细化角点位置。

CORNER_REFINE_APRILTAG 
Python: cv.aruco.CORNER_REFINE_APRILTAG

基于AprilTag 2方法的标签和角点检测 [292]

◆ 预定义字典类型

#include <opencv2/objdetect/aruco_dictionary.hpp>

预定义标记字典/集。

每个字典都指示包含的位数和标记数量

  • DICT_ARUCO_ORIGINAL:标准ArUco库标记。1024个标记,5x5位,最小距离为0
枚举器
DICT_4X4_50 
Python: cv.aruco.DICT_4X4_50

4x4位,任意两个代码之间的最小汉明距离 = 4,50个代码

DICT_4X4_100 
Python: cv.aruco.DICT_4X4_100

4x4位,任意两个代码之间的最小汉明距离 = 3,100个代码

DICT_4X4_250 
Python: cv.aruco.DICT_4X4_250

4x4位,任意两个代码之间的最小汉明距离 = 3,250个代码

DICT_4X4_1000 
Python: cv.aruco.DICT_4X4_1000

4x4位,任意两个代码之间的最小汉明距离 = 2,1000个代码

DICT_5X5_50 
Python: cv.aruco.DICT_5X5_50

5x5位,任意两个代码之间的最小汉明距离 = 8,50个代码

DICT_5X5_100 
Python: cv.aruco.DICT_5X5_100

5x5位,任意两个代码之间的最小汉明距离 = 7,100个代码

DICT_5X5_250 
Python: cv.aruco.DICT_5X5_250

5x5位,任意两个代码之间的最小汉明距离 = 6,250个代码

DICT_5X5_1000 
Python: cv.aruco.DICT_5X5_1000

5x5位,任意两个代码之间的最小汉明距离 = 5,1000个代码

DICT_6X6_50 
Python: cv.aruco.DICT_6X6_50

6x6位,任意两个代码之间的最小汉明距离 = 13,50个代码

DICT_6X6_100 
Python: cv.aruco.DICT_6X6_100

6x6位,任意两个代码之间的最小汉明距离 = 12,100个代码

DICT_6X6_250 
Python: cv.aruco.DICT_6X6_250

6x6位,任意两个代码之间的最小汉明距离 = 11,250个代码

DICT_6X6_1000 
Python: cv.aruco.DICT_6X6_1000

6x6位,任意两个代码之间的最小汉明距离 = 9,1000个代码

DICT_7X7_50 
Python: cv.aruco.DICT_7X7_50

7x7位,任意两个代码之间的最小汉明距离 = 19,50个代码

DICT_7X7_100 
Python: cv.aruco.DICT_7X7_100

7x7位,任意两个代码之间的最小汉明距离 = 18,100个代码

DICT_7X7_250 
Python: cv.aruco.DICT_7X7_250

7x7位,任意两个代码之间的最小汉明距离 = 17,250个代码

DICT_7X7_1000 
Python: cv.aruco.DICT_7X7_1000

7x7位,任意两个代码之间的最小汉明距离 = 14,1000个代码

DICT_ARUCO_ORIGINAL 
Python: cv.aruco.DICT_ARUCO_ORIGINAL

6x6位,任意两个代码之间的最小汉明距离 = 3,1024个代码

DICT_APRILTAG_16h5 
Python: cv.aruco.DICT_APRILTAG_16h5

4x4位,任意两个代码之间的最小汉明距离 = 5,30个代码

DICT_APRILTAG_25h9 
Python: cv.aruco.DICT_APRILTAG_25h9

5x5位,任意两个代码之间的最小汉明距离 = 9,35个代码

DICT_APRILTAG_36h10 
Python: cv.aruco.DICT_APRILTAG_36h10

6x6位,任意两个代码之间的最小汉明距离 = 10,2320个代码

DICT_APRILTAG_36h11 
Python: cv.aruco.DICT_APRILTAG_36h11

6x6位,任意两个代码之间的最小汉明距离 = 11,587个代码

DICT_ARUCO_MIP_36h12 
Python: cv.aruco.DICT_ARUCO_MIP_36h12

6x6位,任意两个代码之间的最小汉明距离 = 12,250个代码

函数文档

◆ drawDetectedCornersCharuco()

void cv::aruco::drawDetectedCornersCharuco ( 输入输出数组 图像,
输入数组 charucoCorners,
输入数组 charucoIds = noArray(),
标量 cornerColor = Scalar(255, 0, 0) )
Python
cv.aruco.drawDetectedCornersCharuco(image, charucoCorners[, charucoIds[, cornerColor]]) -> 图像

#include <opencv2/objdetect/charuco_detector.hpp>

绘制一组 Charuco 角点。

参数
图像输入/输出图像。它必须有1或3个通道。通道数不会改变。
charucoCorners检测到的charuco角点的向量
charucoIdscharucoCorners中每个角点的标识符列表
cornerColor围绕每个角点的正方形的颜色

此函数绘制一组检测到的Charuco角点。如果提供标识符向量,它还会绘制每个角点的ID。

◆ drawDetectedDiamonds()

void cv::aruco::drawDetectedDiamonds ( 输入输出数组 图像,
输入数组数组 diamondCorners,
输入数组 diamondIds = noArray(),
标量 borderColor = Scalar(0, 0, 255) )
Python
cv.aruco.drawDetectedDiamonds(image, diamondCorners[, diamondIds[, borderColor]]) -> 图像

#include <opencv2/objdetect/charuco_detector.hpp>

绘制一组检测到的 ChArUco 菱形标记。

参数
图像输入/输出图像。它必须有1或3个通道。通道数不会改变。
diamondCorners钻石角点的位置,格式与detectCharucoDiamond()函数返回的格式相同。(例如 std::vector<std::vector<cv::Point2f> >)。对于 N 个检测到的标记,此数组的维度应为 Nx4。角点的顺序应为顺时针方向。
diamondIdsdiamondCorners 中钻石的标识符向量,格式与detectCharucoDiamond()函数返回的格式相同(例如 std::vector<Vec4i>)。可选参数,如果不提供,则不绘制 ID。
borderColor标记边框的颜色。其余颜色(文本颜色和第一个角点颜色)基于此颜色计算。

给定一组检测到的钻石,此函数将它们绘制到图像中。标记边框和(如果提供)标记标识符将被绘制。可用于调试。

◆ drawDetectedMarkers()

void cv::aruco::drawDetectedMarkers ( 输入输出数组 图像,
输入数组数组 corners,
输入数组 ids = noArray(),
标量 borderColor = Scalar(0, 255, 0) )
Python
cv.aruco.drawDetectedMarkers(image, corners[, ids[, borderColor]]) -> 图像

#include <opencv2/objdetect/aruco_detector.hpp>

在图像中绘制检测到的标记。

参数
图像输入/输出图像。它必须有1或3个通道。通道数不会改变。
corners输入图像上标记角点的位置。(例如 std::vector<std::vector<cv::Point2f> >)。对于 N 个检测到的标记,此数组的维度应为 Nx4。角点的顺序应为顺时针方向。
idsmarkersCorners 中标记的标识符向量。可选参数,如果不提供,则不绘制 ID。
borderColor标记边框的颜色。其余颜色(文本颜色和第一个角点颜色)基于此颜色计算,以改善可视化效果。

给定一组检测到的标记角点及其对应的 ID,此函数将标记绘制到图像中。标记边框和(如果提供)标记标识符将被绘制。可用于调试。

◆ extendDictionary()

Dictionary cv::aruco::extendDictionary ( int nMarkers,
int markerSize,
const Dictionary & baseDictionary = Dictionary(),
int randomSeed = 0 )
Python
cv.aruco.extendDictionary(nMarkers, markerSize[, baseDictionary[, randomSeed]]) -> retval

#include <opencv2/objdetect/aruco_dictionary.hpp>

使用新的 nMarkers 扩展基本字典。

参数
nMarkers字典中标记的数量。
markerSize每个标记每个维度上的比特数。
baseDictionary在开头包含此字典中的标记(可选)。
randomSeedtheRNG() 的用户提供的种子。

此函数创建一个新的字典,该字典由 nMarkers 个标记组成,每个标记由 markerSize x markerSize 个比特组成。如果提供了 baseDictionary,则其标记将直接包含在内,其余标记将基于它们生成。如果 baseDictionary 的大小高于 nMarkers,则只取 baseDictionary 中的前 nMarkers 个标记,并且不添加新的标记。

◆ generateImageMarker()

void cv::aruco::generateImageMarker ( const Dictionary & dictionary,
int id,
int sidePixels,
OutputArray img,
int borderBits = 1 )
Python
cv.aruco.generateImageMarker(dictionary, id, sidePixels[, img[, borderBits]]) -> img

#include <opencv2/objdetect/aruco_detector.hpp>

生成规范的标记图像。

参数
dictionary指示标记类型的标记字典。
id将返回的标记的标识符。它必须是指定字典中有效的 ID。
sidePixels图像的像素大小。
img包含标记的输出图像。
borderBits标记边框的宽度。

此函数以其规范形式(即准备好打印)返回标记图像。

◆ getPredefinedDictionary() [1/2]

Dictionary cv::aruco::getPredefinedDictionary ( int dict)
Python
cv.aruco.getPredefinedDictionary(dict) -> retval

#include <opencv2/objdetect/aruco_dictionary.hpp>

返回 DICT_* 引用的预定义字典之一。

◆ getPredefinedDictionary() [2/2]

Dictionary cv::aruco::getPredefinedDictionary ( PredefinedDictionaryType name)
Python
cv.aruco.getPredefinedDictionary(dict) -> retval

#include <opencv2/objdetect/aruco_dictionary.hpp>

返回在 PredefinedDictionaryType 中定义的预定义字典之一。