Package org.opencv.objdetect

## Class CharucoDetector

- java.lang.Object
- - org.opencv.core.Algorithm
  - - org.opencv.objdetect.CharucoDetector

-     public class CharucoDetector
      extends Algorithm

- - ### Field Summary

    - ### Fields inherited from class org.opencv.core.Algorithm

      `nativeObj`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `CharucoDetector​(long addr)` |
    `` | `CharucoDetector​(CharucoBoard board)` | Basic CharucoDetector constructor
    `` | `CharucoDetector​(CharucoBoard board, CharucoParameters charucoParams)` | Basic CharucoDetector constructor
    `` | `CharucoDetector​(CharucoBoard board, CharucoParameters charucoParams, DetectorParameters detectorParams)` | Basic CharucoDetector constructor
    `` | `CharucoDetector​(CharucoBoard board, CharucoParameters charucoParams, DetectorParameters detectorParams, RefineParameters refineParams)` | Basic CharucoDetector constructor

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static CharucoDetector` | `__fromPtr__​(long addr)` |
    `void` | `detectBoard​(Mat image, Mat charucoCorners, Mat charucoIds)` | detect aruco markers and interpolate position of ChArUco board corners
    `void` | `detectBoard​(Mat image, Mat charucoCorners, Mat charucoIds, java.util.List<Mat> markerCorners)` | detect aruco markers and interpolate position of ChArUco board corners
    `void` | `detectBoard​(Mat image, Mat charucoCorners, Mat charucoIds, java.util.List<Mat> markerCorners, Mat markerIds)` | detect aruco markers and interpolate position of ChArUco board corners
    `void` | `detectDiamonds​(Mat image, java.util.List<Mat> diamondCorners, Mat diamondIds)` | Detect ChArUco Diamond markers
    `void` | `detectDiamonds​(Mat image, java.util.List<Mat> diamondCorners, Mat diamondIds, java.util.List<Mat> markerCorners)` | Detect ChArUco Diamond markers
    `void` | `detectDiamonds​(Mat image, java.util.List<Mat> diamondCorners, Mat diamondIds, java.util.List<Mat> markerCorners, Mat markerIds)` | Detect ChArUco Diamond markers
    `protected void` | `finalize()` |
    `CharucoBoard` | `getBoard()` |
    `CharucoParameters` | `getCharucoParameters()` |
    `DetectorParameters` | `getDetectorParameters()` |
    `RefineParameters` | `getRefineParameters()` |
    `void` | `setBoard​(CharucoBoard board)` |
    `void` | `setCharucoParameters​(CharucoParameters charucoParameters)` |
    `void` | `setDetectorParameters​(DetectorParameters detectorParameters)` |
    `void` | `setRefineParameters​(RefineParameters refineParameters)` |

    - ### Methods inherited from class org.opencv.core.Algorithm

      `clear, empty, getDefaultName, getNativeObjAddr, save`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CharucoDetector

          protected CharucoDetector​(long addr)

    - #### CharucoDetector

          public CharucoDetector​(CharucoBoard board,
                                 CharucoParameters charucoParams,
                                 DetectorParameters detectorParams,
                                 RefineParameters refineParams)

      Basic CharucoDetector constructor
      Parameters:
        `board` - ChAruco board
        `charucoParams` - charuco detection parameters
        `detectorParams` - marker detection parameters
        `refineParams` - marker refine detection parameters

    - #### CharucoDetector

          public CharucoDetector​(CharucoBoard board,
                                 CharucoParameters charucoParams,
                                 DetectorParameters detectorParams)

      Basic CharucoDetector constructor
      Parameters:
        `board` - ChAruco board
        `charucoParams` - charuco detection parameters
        `detectorParams` - marker detection parameters

    - #### CharucoDetector

          public CharucoDetector​(CharucoBoard board,
                                 CharucoParameters charucoParams)

      Basic CharucoDetector constructor
      Parameters:
        `board` - ChAruco board
        `charucoParams` - charuco detection parameters

    - #### CharucoDetector

          public CharucoDetector​(CharucoBoard board)

      Basic CharucoDetector constructor
      Parameters:
        `board` - ChAruco board

  - ### Method Detail

    - #### __fromPtr__

          public static CharucoDetector __fromPtr__​(long addr)

    - #### getBoard

          public CharucoBoard getBoard()

    - #### setBoard

          public void setBoard​(CharucoBoard board)

    - #### getCharucoParameters

          public CharucoParameters getCharucoParameters()

    - #### setCharucoParameters

          public void setCharucoParameters​(CharucoParameters charucoParameters)

    - #### getDetectorParameters

          public DetectorParameters getDetectorParameters()

    - #### setDetectorParameters

          public void setDetectorParameters​(DetectorParameters detectorParameters)

    - #### getRefineParameters

          public RefineParameters getRefineParameters()

    - #### setRefineParameters

          public void setRefineParameters​(RefineParameters refineParameters)

    - #### detectBoard

          public void detectBoard​(Mat image,
                                  Mat charucoCorners,
                                  Mat charucoIds,
                                  java.util.List<Mat> markerCorners,
                                  Mat markerIds)

      detect aruco markers and interpolate position of ChArUco board corners
      Parameters:
        `image` - input image necesary for corner refinement. Note that markers are not detected and should be sent in corners and ids parameters.
        `charucoCorners` - interpolated chessboard corners.
        `charucoIds` - interpolated chessboard corners identifiers.
        `markerCorners` - vector of already detected markers corners. For each marker, its four corners are provided, (e.g std::vector<std::vector<cv::Point2f> > ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. If markerCorners and markerCorners are empty, the function detect aruco markers and ids.
        `markerIds` - list of identifiers for each marker in corners. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. This function receives the detected markers and returns the 2D position of the chessboard corners from a ChArUco board using the detected Aruco markers. If markerCorners and markerCorners are empty, the detectMarkers() will run and detect aruco markers and ids. If camera parameters are provided, the process is based in an approximated pose estimation, else it is based on local homography. Only visible corners are returned. For each corner, its corresponding identifier is also returned in charucoIds. SEE: findChessboardCorners Note: After OpenCV 4.6.0, there was an incompatible change in the ChArUco pattern generation algorithm for even row counts. Use cv::aruco::CharucoBoard::setLegacyPattern() to ensure compatibility with patterns created using OpenCV versions prior to 4.6.0. For more information, see the issue: https://github.com/opencv/opencv/issues/23152

    - #### detectBoard

          public void detectBoard​(Mat image,
                                  Mat charucoCorners,
                                  Mat charucoIds,
                                  java.util.List<Mat> markerCorners)

      detect aruco markers and interpolate position of ChArUco board corners
      Parameters:
        `image` - input image necesary for corner refinement. Note that markers are not detected and should be sent in corners and ids parameters.
        `charucoCorners` - interpolated chessboard corners.
        `charucoIds` - interpolated chessboard corners identifiers.
        `markerCorners` - vector of already detected markers corners. For each marker, its four corners are provided, (e.g std::vector<std::vector<cv::Point2f> > ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. This function receives the detected markers and returns the 2D position of the chessboard corners from a ChArUco board using the detected Aruco markers. If markerCorners and markerCorners are empty, the detectMarkers() will run and detect aruco markers and ids. If camera parameters are provided, the process is based in an approximated pose estimation, else it is based on local homography. Only visible corners are returned. For each corner, its corresponding identifier is also returned in charucoIds. SEE: findChessboardCorners Note: After OpenCV 4.6.0, there was an incompatible change in the ChArUco pattern generation algorithm for even row counts. Use cv::aruco::CharucoBoard::setLegacyPattern() to ensure compatibility with patterns created using OpenCV versions prior to 4.6.0. For more information, see the issue: https://github.com/opencv/opencv/issues/23152

    - #### detectBoard

          public void detectBoard​(Mat image,
                                  Mat charucoCorners,
                                  Mat charucoIds)

      detect aruco markers and interpolate position of ChArUco board corners
      Parameters:
        `image` - input image necesary for corner refinement. Note that markers are not detected and should be sent in corners and ids parameters.
        `charucoCorners` - interpolated chessboard corners.
        `charucoIds` - interpolated chessboard corners identifiers. corners are provided, (e.g std::vector<std::vector<cv::Point2f> > ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. This function receives the detected markers and returns the 2D position of the chessboard corners from a ChArUco board using the detected Aruco markers. If markerCorners and markerCorners are empty, the detectMarkers() will run and detect aruco markers and ids. If camera parameters are provided, the process is based in an approximated pose estimation, else it is based on local homography. Only visible corners are returned. For each corner, its corresponding identifier is also returned in charucoIds. SEE: findChessboardCorners Note: After OpenCV 4.6.0, there was an incompatible change in the ChArUco pattern generation algorithm for even row counts. Use cv::aruco::CharucoBoard::setLegacyPattern() to ensure compatibility with patterns created using OpenCV versions prior to 4.6.0. For more information, see the issue: 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)

      Detect ChArUco Diamond markers
      Parameters:
        `image` - input image necessary for corner subpixel.
        `diamondCorners` - output list of detected diamond corners (4 corners per diamond). The order is the same than in marker corners: top left, top right, bottom right and bottom left. Similar format than the corners returned by detectMarkers (e.g std::vector<std::vector<cv::Point2f> > ).
        `diamondIds` - ids of the diamonds in diamondCorners. The id of each diamond is in fact of type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the diamond.
        `markerCorners` - list of detected marker corners from detectMarkers function. If markerCorners and markerCorners are empty, the function detect aruco markers and ids.
        `markerIds` - list of marker ids in markerCorners. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. This function detects Diamond markers from the previous detected ArUco markers. The diamonds are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters are provided, the diamond search is based on reprojection. If not, diamond search is based on homography. Homography is faster than reprojection, but less accurate.

    - #### detectDiamonds

          public void detectDiamonds​(Mat image,
                                     java.util.List<Mat> diamondCorners,
                                     Mat diamondIds,
                                     java.util.List<Mat> markerCorners)

      Detect ChArUco Diamond markers
      Parameters:
        `image` - input image necessary for corner subpixel.
        `diamondCorners` - output list of detected diamond corners (4 corners per diamond). The order is the same than in marker corners: top left, top right, bottom right and bottom left. Similar format than the corners returned by detectMarkers (e.g std::vector<std::vector<cv::Point2f> > ).
        `diamondIds` - ids of the diamonds in diamondCorners. The id of each diamond is in fact of type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the diamond.
        `markerCorners` - list of detected marker corners from detectMarkers function. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. This function detects Diamond markers from the previous detected ArUco markers. The diamonds are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters are provided, the diamond search is based on reprojection. If not, diamond search is based on homography. Homography is faster than reprojection, but less accurate.

    - #### detectDiamonds

          public void detectDiamonds​(Mat image,
                                     java.util.List<Mat> diamondCorners,
                                     Mat diamondIds)

      Detect ChArUco Diamond markers
      Parameters:
        `image` - input image necessary for corner subpixel.
        `diamondCorners` - output list of detected diamond corners (4 corners per diamond). The order is the same than in marker corners: top left, top right, bottom right and bottom left. Similar format than the corners returned by detectMarkers (e.g std::vector<std::vector<cv::Point2f> > ).
        `diamondIds` - ids of the diamonds in diamondCorners. The id of each diamond is in fact of type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the diamond. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. If markerCorners and markerCorners are empty, the function detect aruco markers and ids. This function detects Diamond markers from the previous detected ArUco markers. The diamonds are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters are provided, the diamond search is based on reprojection. If not, diamond search is based on homography. Homography is faster than reprojection, but less accurate.

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Overrides:
        `finalize` in class `Algorithm`
      Throws:
        `java.lang.Throwable`