类 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<std::vector<cv::Point2f> >)。对于 N 个检测到的标记,此数组的维度为 Nx4。角点的顺序为顺时针方向。
        ids - 检测到的标记的标识符向量。标识符为 int 类型(例如 std::vector<int>)。对于 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<std::vector<cv::Point2f> >)。对于 N 个检测到的标记,此数组的维度为 Nx4。角点的顺序为顺时针方向。
        ids - 检测到的标记的标识符向量。标识符的类型为 int(例如 std::vector<int>)。对于 N 个检测到的标记,ids 的大小也是 N。标识符的顺序与 imgPoints 数组中的标记顺序相同。正确的编码。用于调试目的。在输入图像中执行标记检测。只搜索特定字典中包含的标记。对于每个检测到的标记,它返回其在图像中角点的二维位置及其对应的标识符。请注意,此函数不执行位姿估计。注意:此函数不校正镜头畸变或考虑镜头畸变。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变处理,参见: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 坐标必须相同。
      • getDictionary

        public Dictionary getDictionary()
      • setDictionary

        public void setDictionary​(Dictionary dictionary)
      • setDetectorParameters

        public void setDetectorParameters​(DetectorParameters detectorParameters)
      • setRefineParameters

        public void setRefineParameters​(RefineParameters refineParameters)
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        覆盖方法
        finalize 在类 Algorithm
        抛出异常
        java.lang.Throwable