类 ArucoDetector


  • public class ArucoDetector
    extends Algorithm
    ArucoDetector 类的主要功能是使用 detectMarkers() 方法检测图像中的标记。在图像中检测到一些标记后,您可以尝试使用 refineDetectedMarkers() 方法从该字典中查找未检测到的标记。参见:DetectorParameters、RefineParameters
    • 构造函数详情

      • ArucoDetector

        protected ArucoDetector​(long addr)
      • ArucoDetector

        public ArucoDetector​(Dictionary dictionary,
                             DetectorParameters detectorParams,
                             RefineParameters refineParams)
        基本的 ArucoDetector 构造函数
        参数
        dictionary - 指示要搜索的标记类型
        detectorParams - 标记检测参数
        refineParams - 标记优化检测参数
      • ArucoDetector

        public ArucoDetector​(Dictionary dictionary,
                             DetectorParameters detectorParams)
        基本的 ArucoDetector 构造函数
        参数
        dictionary - 指示要搜索的标记类型
        detectorParams - 标记检测参数
      • ArucoDetector

        public ArucoDetector​(Dictionary dictionary)
        基本的 ArucoDetector 构造函数
        参数
        dictionary - 指示要搜索的标记类型
      • ArucoDetector

        public ArucoDetector()
        基本的 ArucoDetector 构造函数
    • 方法详情

      • __fromPtr__

        public static ArucoDetector __fromPtr__​(long addr)
      • detectMarkers

        public void detectMarkers​(Mat image,
                                  java.util.List<Mat> corners,
                                  Mat ids,
                                  java.util.List<Mat> rejectedImgPoints)
        基本标记检测
        参数
        image - 输入图像
        corners - 检测到的标记角的向量。对于每个标记,提供其四个角(例如 std::vector>)。对于 N 个检测到的标记,此数组的维度为 Nx4。角的顺序是顺时针的。
        ids - 检测到的标记的标识符向量。标识符类型为 int(例如 std::vector)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中标记的顺序相同。
        rejectedImgPoints - 包含内部代码编码不正确的那些正方形的 imgPoints。用于调试目的。在输入图像中执行标记检测。仅搜索第一个指定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角的二维位置及其对应的标识符。请注意,此函数不执行姿态估计。 注意:此函数不校正镜头畸变或将其考虑在内。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。参见:undistort、estimatePoseSingleMarkers、estimatePoseBoard
      • detectMarkers

        public void detectMarkers​(Mat image,
                                  java.util.List<Mat> corners,
                                  Mat ids)
        基本标记检测
        参数
        image - 输入图像
        corners - 检测到的标记角的向量。对于每个标记,提供其四个角(例如 std::vector>)。对于 N 个检测到的标记,此数组的维度为 Nx4。角的顺序是顺时针的。
        ids - 检测到的标记的标识符向量。标识符类型为 int(例如 std::vector)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中标记的顺序相同。编码不正确。用于调试目的。在输入图像中执行标记检测。仅搜索第一个指定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角的二维位置及其对应的标识符。请注意,此函数不执行姿态估计。 注意:此函数不校正镜头畸变或将其考虑在内。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。参见:undistort、estimatePoseSingleMarkers、estimatePoseBoard
      • detectMarkersWithConfidence

        public void detectMarkersWithConfidence​(Mat image,
                                                java.util.List<Mat> corners,
                                                Mat ids,
                                                Mat markersConfidence,
                                                java.util.List<Mat> rejectedImgPoints)
        带有置信度计算的标记检测
        参数
        image - 输入图像
        corners - 检测到的标记角的向量。对于每个标记,提供其四个角(例如 std::vector>)。对于 N 个检测到的标记,此数组的维度为 Nx4。角的顺序是顺时针的。
        ids - 检测到的标记的标识符向量。标识符类型为 int(例如 std::vector)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中标记的顺序相同。
        markersConfidence - 包含标记检测的归一化置信度 [0;1],定义为 1 减去归一化不确定性(不正确像素检测的百分比),其中 1 表示完美像素检测。置信度值类型为 float(例如 std::vector
        rejectedImgPoints - 包含内部代码编码不正确的那些正方形的 imgPoints。用于调试目的。在输入图像中执行标记检测。仅搜索第一个指定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角的二维位置及其对应的标识符。请注意,此函数不执行姿态估计。 注意:此函数不校正镜头畸变或将其考虑在内。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。参见:undistort、estimatePoseSingleMarkers、estimatePoseBoard
      • detectMarkersWithConfidence

        public void detectMarkersWithConfidence​(Mat image,
                                                java.util.List<Mat> corners,
                                                Mat ids,
                                                Mat markersConfidence)
        带有置信度计算的标记检测
        参数
        image - 输入图像
        corners - 检测到的标记角的向量。对于每个标记,提供其四个角(例如 std::vector>)。对于 N 个检测到的标记,此数组的维度为 Nx4。角的顺序是顺时针的。
        ids - 检测到的标记的标识符向量。标识符类型为 int(例如 std::vector)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中标记的顺序相同。
        markersConfidence - 包含标记检测的归一化置信度 [0;1],定义为 1 减去归一化不确定性(不正确像素检测的百分比),其中 1 表示完美像素检测。置信度值类型为 float(例如 std::vector)编码不正确。用于调试目的。在输入图像中执行标记检测。仅搜索第一个指定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角的二维位置及其对应的标识符。请注意,此函数不执行姿态估计。 注意:此函数不校正镜头畸变或将其考虑在内。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。参见:undistort、estimatePoseSingleMarkers、estimatePoseBoard
      • refineDetectedMarkers

        public void refineDetectedMarkers​(Mat image,
                                          Board board,
                                          java.util.List<Mat> detectedCorners,
                                          Mat detectedIds,
                                          java.util.List<Mat> rejectedCorners,
                                          Mat cameraMatrix,
                                          Mat distCoeffs,
                                          Mat recoveredIdxs)
        根据已检测到的标记和板布局优化未检测到的标记
        参数
        image - 输入图像
        board - 板中标记的布局。
        detectedCorners - 已检测到的标记角的向量。
        detectedIds - 已检测到的标记标识符的向量。
        rejectedCorners - 标记检测过程中拒绝的候选者的向量。
        cameraMatrix - 可选输入 3x3 浮点相机矩阵 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
        distCoeffs - 畸变系数的可选向量 \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\),包含 4、5、8 或 12 个元素
        recoveredIdxs - 可选数组,返回原始 rejectedCorners 数组中恢复的候选者的索引。此函数尝试查找在基本 detecMarkers 函数中未检测到的标记。首先,根据当前检测到的标记和板布局,函数内插缺失标记的位置。然后,它尝试根据 minRepDistance 和 errorCorrectionRate 参数在重投影标记和拒绝的候选者之间找到对应关系。如果提供了相机参数和畸变系数,则使用 projectPoint 函数重投影缺失标记。如果未提供,则使用全局单应性内插缺失标记投影,并且板中所有标记角必须具有相同的 Z 坐标。 注意:此函数假定板仅包含来自一个字典的标记,因此仅使用第一个配置的字典。它必须与板的字典匹配才能正常工作。
      • refineDetectedMarkers

        public void refineDetectedMarkers​(Mat image,
                                          Board board,
                                          java.util.List<Mat> detectedCorners,
                                          Mat detectedIds,
                                          java.util.List<Mat> rejectedCorners,
                                          Mat cameraMatrix,
                                          Mat distCoeffs)
        根据已检测到的标记和板布局优化未检测到的标记
        参数
        image - 输入图像
        board - 板中标记的布局。
        detectedCorners - 已检测到的标记角的向量。
        detectedIds - 已检测到的标记标识符的向量。
        rejectedCorners - 标记检测过程中拒绝的候选者的向量。
        cameraMatrix - 可选输入 3x3 浮点相机矩阵 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
        distCoeffs - 畸变系数的可选向量 \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\),包含 4、5、8 或 12 个元素,原始 rejectedCorners 数组。此函数尝试查找在基本 detecMarkers 函数中未检测到的标记。首先,根据当前检测到的标记和板布局,函数内插缺失标记的位置。然后,它尝试根据 minRepDistance 和 errorCorrectionRate 参数在重投影标记和拒绝的候选者之间找到对应关系。如果提供了相机参数和畸变系数,则使用 projectPoint 函数重投影缺失标记。如果未提供,则使用全局单应性内插缺失标记投影,并且板中所有标记角必须具有相同的 Z 坐标。 注意:此函数假定板仅包含来自一个字典的标记,因此仅使用第一个配置的字典。它必须与板的字典匹配才能正常工作。
      • refineDetectedMarkers

        public void refineDetectedMarkers​(Mat image,
                                          Board board,
                                          java.util.List<Mat> detectedCorners,
                                          Mat detectedIds,
                                          java.util.List<Mat> rejectedCorners,
                                          Mat cameraMatrix)
        根据已检测到的标记和板布局优化未检测到的标记
        参数
        image - 输入图像
        board - 板中标记的布局。
        detectedCorners - 已检测到的标记角的向量。
        detectedIds - 已检测到的标记标识符的向量。
        rejectedCorners - 标记检测过程中拒绝的候选者的向量。
        cameraMatrix - 可选输入 3x3 浮点相机矩阵 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\),包含 4、5、8 或 12 个元素,原始 rejectedCorners 数组。此函数尝试查找在基本 detecMarkers 函数中未检测到的标记。首先,根据当前检测到的标记和板布局,函数内插缺失标记的位置。然后,它尝试根据 minRepDistance 和 errorCorrectionRate 参数在重投影标记和拒绝的候选者之间找到对应关系。如果提供了相机参数和畸变系数,则使用 projectPoint 函数重投影缺失标记。如果未提供,则使用全局单应性内插缺失标记投影,并且板中所有标记角必须具有相同的 Z 坐标。 注意:此函数假定板仅包含来自一个字典的标记,因此仅使用第一个配置的字典。它必须与板的字典匹配才能正常工作。
      • refineDetectedMarkers

        public void refineDetectedMarkers​(Mat image,
                                          Board board,
                                          java.util.List<Mat> detectedCorners,
                                          Mat detectedIds,
                                          java.util.List<Mat> rejectedCorners)
        根据已检测到的标记和板布局优化未检测到的标记
        参数
        image - 输入图像
        board - 板中标记的布局。
        detectedCorners - 已检测到的标记角的向量。
        detectedIds - 已检测到的标记标识符的向量。
        rejectedCorners - 标记检测过程中拒绝的候选者的向量。 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\),包含 4、5、8 或 12 个元素,原始 rejectedCorners 数组。此函数尝试查找在基本 detecMarkers 函数中未检测到的标记。首先,根据当前检测到的标记和板布局,函数内插缺失标记的位置。然后,它尝试根据 minRepDistance 和 errorCorrectionRate 参数在重投影标记和拒绝的候选者之间找到对应关系。如果提供了相机参数和畸变系数,则使用 projectPoint 函数重投影缺失标记。如果未提供,则使用全局单应性内插缺失标记投影,并且板中所有标记角必须具有相同的 Z 坐标。 注意:此函数假定板仅包含来自一个字典的标记,因此仅使用第一个配置的字典。它必须与板的字典匹配才能正常工作。
      • detectMarkersMultiDict

        public void detectMarkersMultiDict​(Mat image,
                                           java.util.List<Mat> corners,
                                           Mat ids,
                                           java.util.List<Mat> rejectedImgPoints,
                                           Mat dictIndices)
        基本标记检测
        参数
        image - 输入图像
        corners - 检测到的标记角的向量。对于每个标记,提供其四个角(例如 std::vector>)。对于 N 个检测到的标记,此数组的维度为 Nx4。角的顺序是顺时针的。
        ids - 检测到的标记的标识符向量。标识符类型为 int(例如 std::vector)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中标记的顺序相同。
        rejectedImgPoints - 包含内部代码编码不正确的那些正方形的 imgPoints。用于调试目的。
        dictIndices - 每个检测到的标记的字典索引向量。使用 getDictionaries() 获取相应字典的列表。在输入图像中执行标记检测。仅搜索特定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角的二维位置及其对应的标识符。请注意,此函数不执行姿态估计。 注意:此函数不校正镜头畸变或将其考虑在内。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。参见:undistort、estimatePoseSingleMarkers、estimatePoseBoard
      • detectMarkersMultiDict

        public void detectMarkersMultiDict​(Mat image,
                                           java.util.List<Mat> corners,
                                           Mat ids,
                                           java.util.List<Mat> rejectedImgPoints)
        基本标记检测
        参数
        image - 输入图像
        corners - 检测到的标记角的向量。对于每个标记,提供其四个角(例如 std::vector>)。对于 N 个检测到的标记,此数组的维度为 Nx4。角的顺序是顺时针的。
        ids - 检测到的标记的标识符向量。标识符类型为 int(例如 std::vector)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中标记的顺序相同。
        rejectedImgPoints - 包含内部代码编码不正确的那些正方形的 imgPoints。用于调试目的。相应字典的列表。在输入图像中执行标记检测。仅搜索特定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角的二维位置及其对应的标识符。请注意,此函数不执行姿态估计。 注意:此函数不校正镜头畸变或将其考虑在内。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。参见:undistort、estimatePoseSingleMarkers、estimatePoseBoard
      • detectMarkersMultiDict

        public void detectMarkersMultiDict​(Mat image,
                                           java.util.List<Mat> corners,
                                           Mat ids)
        基本标记检测
        参数
        image - 输入图像
        corners - 检测到的标记角的向量。对于每个标记,提供其四个角(例如 std::vector>)。对于 N 个检测到的标记,此数组的维度为 Nx4。角的顺序是顺时针的。
        ids - 检测到的标记的标识符向量。标识符类型为 int(例如 std::vector)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中标记的顺序相同。编码不正确。用于调试目的。相应字典的列表。在输入图像中执行标记检测。仅搜索特定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角的二维位置及其对应的标识符。请注意,此函数不执行姿态估计。 注意:此函数不校正镜头畸变或将其考虑在内。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。参见:undistort、estimatePoseSingleMarkers、estimatePoseBoard
      • getDictionary

        public Dictionary getDictionary()
        返回用于标记检测的内部列表中的第一个字典。
        返回
        来自已配置的 ArucoDetector 的第一个字典。
      • setDictionary

        public void setDictionary​(Dictionary dictionary)
        设置并替换内部列表中用于标记检测的第一个字典。
        参数
        dictionary - 将替换内部列表中第一个字典的新字典。
      • setDetectorParameters

        public void setDetectorParameters​(DetectorParameters detectorParameters)
      • setRefineParameters

        public void setRefineParameters​(RefineParameters refineParameters)