类 CharucoDetector


  • public class CharucoDetector
    extends Algorithm
    • 构造函数详情

      • CharucoDetector

        protected CharucoDetector​(long addr)
      • CharucoDetector

        public CharucoDetector​(CharucoBoard board,
                               CharucoParameters charucoParams,
                               DetectorParameters detectorParams,
                               RefineParameters refineParams)
        基本的 CharucoDetector 构造函数
        参数
        board - ChAruco 棋盘
        charucoParams - charuco 检测参数
        detectorParams - 标记检测参数
        refineParams - 标记细化检测参数
      • CharucoDetector

        public CharucoDetector​(CharucoBoard board,
                               CharucoParameters charucoParams,
                               DetectorParameters detectorParams)
        基本的 CharucoDetector 构造函数
        参数
        board - ChAruco 棋盘
        charucoParams - charuco 检测参数
        detectorParams - 标记检测参数
      • CharucoDetector

        public CharucoDetector​(CharucoBoard board,
                               CharucoParameters charucoParams)
        基本的 CharucoDetector 构造函数
        参数
        board - ChAruco 棋盘
        charucoParams - charuco 检测参数
      • CharucoDetector

        public CharucoDetector​(CharucoBoard board)
        基本的 CharucoDetector 构造函数
        参数
        board - ChAruco 棋盘
    • 方法详情

      • setCharucoParameters

        public void setCharucoParameters​(CharucoParameters charucoParameters)
      • setDetectorParameters

        public void setDetectorParameters​(DetectorParameters detectorParameters)
      • setRefineParameters

        public void setRefineParameters​(RefineParameters refineParameters)
      • detectBoard

        public void detectBoard​(Mat image,
                                Mat charucoCorners,
                                Mat charucoIds,
                                java.util.List<Mat> markerCorners,
                                Mat markerIds)
        检测 ArUco 标记并插值 ChArUco 棋盘角点的位姿
        参数
        image - 角点细化所需的输入图像。注意,不会检测标记,应在 corners 和 ids 参数中发送。
        charucoCorners - 插值的棋盘角点。
        charucoIds - 插值的棋盘角点标识符。
        markerCorners - 已检测到的标记角点的向量。对于每个标记,都提供其四个角点(例如 std::vector<std::vector<cv::Point2f> >)。对于 N 个检测到的标记,此数组的维度应为 Nx4。角点的顺序应为顺时针方向。如果 markerCorners 和 markerCorners 为空,则函数会检测 aruco 标记和 id。
        markerIds - 角点处每个标记的标识符列表。如果 `markerCorners` 和 `markerIds` 为空,则函数将检测 ArUco 标记和 ID。此函数接收检测到的标记,并使用检测到的 ArUco 标记返回 ChArUco 棋盘角点的二维位置。如果 `markerCorners` 和 `markerIds` 为空,则 `detectMarkers()` 将运行并检测 ArUco 标记和 ID。如果提供相机参数,则该过程基于近似的姿态估计,否则基于局部单应性。仅返回可见的角点。对于每个角点,其对应的标识符也返回在 `charucoIds` 中。参见:`findChessboardCorners` **注意:**在 OpenCV 4.6.0 之后,对于偶数行计数的 ChArUco 模式生成算法存在不兼容的更改。使用 `cv::aruco::CharucoBoard::setLegacyPattern()` 可确保与使用 OpenCV 4.6.0 之前的版本创建的模式兼容。更多信息,请参见问题:https://github.com/opencv/opencv/issues/23152
      • detectBoard

        public void detectBoard​(Mat image,
                                Mat charucoCorners,
                                Mat charucoIds,
                                java.util.List<Mat> markerCorners)
        检测 ArUco 标记并插值 ChArUco 棋盘角点的位姿
        参数
        image - 角点细化所需的输入图像。注意,不会检测标记,应在 corners 和 ids 参数中发送。
        charucoCorners - 插值的棋盘角点。
        charucoIds - 插值的棋盘角点标识符。
        markerCorners - 已经检测到的标记角点的向量。对于每个标记,都提供其四个角点(例如 `std::vector>`)。对于 N 个检测到的标记,此数组的维度应为 Nx4。角点的顺序应为顺时针方向。如果 `markerCorners` 和 `markerIds` 为空,则函数将检测 ArUco 标记和 ID。此函数接收检测到的标记,并使用检测到的 ArUco 标记返回 ChArUco 棋盘角点的二维位置。如果 `markerCorners` 和 `markerIds` 为空,则 `detectMarkers()` 将运行并检测 ArUco 标记和 ID。如果提供相机参数,则该过程基于近似的姿态估计,否则基于局部单应性。仅返回可见的角点。对于每个角点,其对应的标识符也返回在 `charucoIds` 中。参见:`findChessboardCorners` **注意:**在 OpenCV 4.6.0 之后,对于偶数行计数的 ChArUco 模式生成算法存在不兼容的更改。使用 `cv::aruco::CharucoBoard::setLegacyPattern()` 可确保与使用 OpenCV 4.6.0 之前的版本创建的模式兼容。更多信息,请参见问题:https://github.com/opencv/opencv/issues/23152
      • detectBoard

        public void detectBoard​(Mat image,
                                Mat charucoCorners,
                                Mat charucoIds)
        检测 ArUco 标记并插值 ChArUco 棋盘角点的位姿
        参数
        image - 角点细化所需的输入图像。注意,不会检测标记,应在 corners 和 ids 参数中发送。
        charucoCorners - 插值的棋盘角点。
        charucoIds - 插值的棋盘角点标识符。对于每个标记,都提供其四个角点(例如 `std::vector>`)。对于 N 个检测到的标记,此数组的维度应为 Nx4。角点的顺序应为顺时针方向。如果 `markerCorners` 和 `markerIds` 为空,则函数将检测 ArUco 标记和 ID。此函数接收检测到的标记,并使用检测到的 ArUco 标记返回 ChArUco 棋盘角点的二维位置。如果 `markerCorners` 和 `markerIds` 为空,则 `detectMarkers()` 将运行并检测 ArUco 标记和 ID。如果提供相机参数,则该过程基于近似的姿态估计,否则基于局部单应性。仅返回可见的角点。对于每个角点,其对应的标识符也返回在 `charucoIds` 中。参见:`findChessboardCorners` **注意:**在 OpenCV 4.6.0 之后,对于偶数行计数的 ChArUco 模式生成算法存在不兼容的更改。使用 `cv::aruco::CharucoBoard::setLegacyPattern()` 可确保与使用 OpenCV 4.6.0 之前的版本创建的模式兼容。更多信息,请参见问题:https://github.com/opencv/opencv/issues/23152
      • detectDiamonds

        public void detectDiamonds​(Mat image,
                                   java.util.List<Mat> diamondCorners,
                                   Mat diamondIds,
                                   java.util.List<Mat> markerCorners,
                                   Mat markerIds)
        检测 ChArUco 菱形标记
        参数
        image - 角点亚像素计算所需的输入图像。
        diamondCorners - 检测到的菱形角点输出列表(每个菱形 4 个角点)。顺序与标记角点相同:左上、右上、右下和左下。与 `detectMarkers` 返回的角点格式相似(例如 `std::vector>`)。
        diamondIds - `diamondCorners` 中菱形的 ID。每个菱形的 ID 实际上是 `Vec4i` 类型,因此每个菱形都有 4 个 ID,它们是构成菱形的 ArUco 标记的 ID。
        markerCorners - 来自 `detectMarkers` 函数的检测到的标记角点列表。如果 `markerCorners` 和 `markerIds` 为空,则函数将检测 ArUco 标记和 ID。
        markerIds - `markerCorners` 中标记 ID 的列表。如果 `markerCorners` 和 `markerIds` 为空,则函数将检测 ArUco 标记和 ID。此函数从先前检测到的 ArUco 标记中检测菱形标记。菱形返回在 `diamondCorners` 和 `diamondIds` 参数中。如果提供相机校准参数,则菱形搜索基于重投影。如果没有,则菱形搜索基于单应性。单应性比重投影更快,但精度较低。
      • detectDiamonds

        public void detectDiamonds​(Mat image,
                                   java.util.List<Mat> diamondCorners,
                                   Mat diamondIds,
                                   java.util.List<Mat> markerCorners)
        检测 ChArUco 菱形标记
        参数
        image - 角点亚像素计算所需的输入图像。
        diamondCorners - 检测到的菱形角点输出列表(每个菱形 4 个角点)。顺序与标记角点相同:左上、右上、右下和左下。与 `detectMarkers` 返回的角点格式相似(例如 `std::vector>`)。
        diamondIds - `diamondCorners` 中菱形的 ID。每个菱形的 ID 实际上是 `Vec4i` 类型,因此每个菱形都有 4 个 ID,它们是构成菱形的 ArUco 标记的 ID。
        markerCorners - 来自 `detectMarkers` 函数的检测到的标记角点列表。如果 `markerCorners` 和 `markerIds` 为空,则函数将检测 ArUco 标记和 ID。此函数从先前检测到的 ArUco 标记中检测菱形标记。菱形返回在 `diamondCorners` 和 `diamondIds` 参数中。如果提供相机校准参数,则菱形搜索基于重投影。如果没有,则菱形搜索基于单应性。单应性比重投影更快,但精度较低。
      • detectDiamonds

        public void detectDiamonds​(Mat image,
                                   java.util.List<Mat> diamondCorners,
                                   Mat diamondIds)
        检测 ChArUco 菱形标记
        参数
        image - 角点亚像素计算所需的输入图像。
        diamondCorners - 检测到的菱形角点输出列表(每个菱形 4 个角点)。顺序与标记角点相同:左上、右上、右下和左下。与 `detectMarkers` 返回的角点格式相似(例如 `std::vector>`)。
        diamondIds - `diamondCorners` 中菱形的 ID。每个菱形的 ID 实际上是 `Vec4i` 类型,因此每个菱形都有 4 个 ID,它们是构成菱形的 ArUco 标记的 ID。此函数从先前检测到的 ArUco 标记中检测菱形标记。菱形返回在 `diamondCorners` 和 `diamondIds` 参数中。如果提供相机校准参数,则菱形搜索基于重投影。如果没有,则菱形搜索基于单应性。单应性比重投影更快,但精度较低。
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        重写
        finalize 在类 Algorithm
        抛出
        java.lang.Throwable