001//
002// This file is auto-generated. Please don't modify it!
003//
004package org.opencv.aruco;
005
006import java.util.ArrayList;
007import java.util.List;
008import org.opencv.aruco.EstimateParameters;
009import org.opencv.core.Mat;
010import org.opencv.core.Size;
011import org.opencv.core.TermCriteria;
012import org.opencv.objdetect.Board;
013import org.opencv.objdetect.CharucoBoard;
014import org.opencv.objdetect.DetectorParameters;
015import org.opencv.objdetect.Dictionary;
016import org.opencv.utils.Converters;
017
018// C++: class Aruco
019
020public class Aruco {
021
022    // C++: enum PatternPositionType (cv.aruco.PatternPositionType)
023    public static final int
024            ARUCO_CCW_CENTER = 0,
025            ARUCO_CW_TOP_LEFT_CORNER = 1;
026
027
028    //
029    // C++:  void cv::aruco::detectMarkers(Mat image, Ptr_Dictionary dictionary, vector_Mat& corners, Mat& ids, Ptr_DetectorParameters parameters = makePtr<DetectorParameters>(), vector_Mat& rejectedImgPoints = vector_Mat())
030    //
031
032    /**
033     * detect markers
034     * @deprecated Use class ArucoDetector::detectMarkers
035     * @param image automatically generated
036     * @param dictionary automatically generated
037     * @param corners automatically generated
038     * @param ids automatically generated
039     * @param parameters automatically generated
040     * @param rejectedImgPoints automatically generated
041     */
042    @Deprecated
043    public static void detectMarkers(Mat image, Dictionary dictionary, List<Mat> corners, Mat ids, DetectorParameters parameters, List<Mat> rejectedImgPoints) {
044        Mat corners_mat = new Mat();
045        Mat rejectedImgPoints_mat = new Mat();
046        detectMarkers_0(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj, parameters.getNativeObjAddr(), rejectedImgPoints_mat.nativeObj);
047        Converters.Mat_to_vector_Mat(corners_mat, corners);
048        corners_mat.release();
049        Converters.Mat_to_vector_Mat(rejectedImgPoints_mat, rejectedImgPoints);
050        rejectedImgPoints_mat.release();
051    }
052
053    /**
054     * detect markers
055     * @deprecated Use class ArucoDetector::detectMarkers
056     * @param image automatically generated
057     * @param dictionary automatically generated
058     * @param corners automatically generated
059     * @param ids automatically generated
060     * @param parameters automatically generated
061     */
062    @Deprecated
063    public static void detectMarkers(Mat image, Dictionary dictionary, List<Mat> corners, Mat ids, DetectorParameters parameters) {
064        Mat corners_mat = new Mat();
065        detectMarkers_1(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj, parameters.getNativeObjAddr());
066        Converters.Mat_to_vector_Mat(corners_mat, corners);
067        corners_mat.release();
068    }
069
070    /**
071     * detect markers
072     * @deprecated Use class ArucoDetector::detectMarkers
073     * @param image automatically generated
074     * @param dictionary automatically generated
075     * @param corners automatically generated
076     * @param ids automatically generated
077     */
078    @Deprecated
079    public static void detectMarkers(Mat image, Dictionary dictionary, List<Mat> corners, Mat ids) {
080        Mat corners_mat = new Mat();
081        detectMarkers_2(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj);
082        Converters.Mat_to_vector_Mat(corners_mat, corners);
083        corners_mat.release();
084    }
085
086
087    //
088    // C++:  void cv::aruco::refineDetectedMarkers(Mat image, Ptr_Board board, vector_Mat& detectedCorners, Mat& detectedIds, vector_Mat& rejectedCorners, Mat cameraMatrix = Mat(), Mat distCoeffs = Mat(), float minRepDistance = 10.f, float errorCorrectionRate = 3.f, bool checkAllOrders = true, Mat& recoveredIdxs = Mat(), Ptr_DetectorParameters parameters = makePtr<DetectorParameters>())
089    //
090
091    /**
092     * refine detected markers
093     * @deprecated Use class ArucoDetector::refineDetectedMarkers
094     * @param image automatically generated
095     * @param board automatically generated
096     * @param detectedCorners automatically generated
097     * @param detectedIds automatically generated
098     * @param rejectedCorners automatically generated
099     * @param cameraMatrix automatically generated
100     * @param distCoeffs automatically generated
101     * @param minRepDistance automatically generated
102     * @param errorCorrectionRate automatically generated
103     * @param checkAllOrders automatically generated
104     * @param recoveredIdxs automatically generated
105     * @param parameters automatically generated
106     */
107    @Deprecated
108    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate, boolean checkAllOrders, Mat recoveredIdxs, DetectorParameters parameters) {
109        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
110        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
111        refineDetectedMarkers_0(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate, checkAllOrders, recoveredIdxs.nativeObj, parameters.getNativeObjAddr());
112        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
113        detectedCorners_mat.release();
114        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
115        rejectedCorners_mat.release();
116    }
117
118    /**
119     * refine detected markers
120     * @deprecated Use class ArucoDetector::refineDetectedMarkers
121     * @param image automatically generated
122     * @param board automatically generated
123     * @param detectedCorners automatically generated
124     * @param detectedIds automatically generated
125     * @param rejectedCorners automatically generated
126     * @param cameraMatrix automatically generated
127     * @param distCoeffs automatically generated
128     * @param minRepDistance automatically generated
129     * @param errorCorrectionRate automatically generated
130     * @param checkAllOrders automatically generated
131     * @param recoveredIdxs automatically generated
132     */
133    @Deprecated
134    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate, boolean checkAllOrders, Mat recoveredIdxs) {
135        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
136        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
137        refineDetectedMarkers_1(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate, checkAllOrders, recoveredIdxs.nativeObj);
138        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
139        detectedCorners_mat.release();
140        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
141        rejectedCorners_mat.release();
142    }
143
144    /**
145     * refine detected markers
146     * @deprecated Use class ArucoDetector::refineDetectedMarkers
147     * @param image automatically generated
148     * @param board automatically generated
149     * @param detectedCorners automatically generated
150     * @param detectedIds automatically generated
151     * @param rejectedCorners automatically generated
152     * @param cameraMatrix automatically generated
153     * @param distCoeffs automatically generated
154     * @param minRepDistance automatically generated
155     * @param errorCorrectionRate automatically generated
156     * @param checkAllOrders automatically generated
157     */
158    @Deprecated
159    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate, boolean checkAllOrders) {
160        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
161        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
162        refineDetectedMarkers_2(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate, checkAllOrders);
163        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
164        detectedCorners_mat.release();
165        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
166        rejectedCorners_mat.release();
167    }
168
169    /**
170     * refine detected markers
171     * @deprecated Use class ArucoDetector::refineDetectedMarkers
172     * @param image automatically generated
173     * @param board automatically generated
174     * @param detectedCorners automatically generated
175     * @param detectedIds automatically generated
176     * @param rejectedCorners automatically generated
177     * @param cameraMatrix automatically generated
178     * @param distCoeffs automatically generated
179     * @param minRepDistance automatically generated
180     * @param errorCorrectionRate automatically generated
181     */
182    @Deprecated
183    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate) {
184        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
185        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
186        refineDetectedMarkers_3(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate);
187        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
188        detectedCorners_mat.release();
189        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
190        rejectedCorners_mat.release();
191    }
192
193    /**
194     * refine detected markers
195     * @deprecated Use class ArucoDetector::refineDetectedMarkers
196     * @param image automatically generated
197     * @param board automatically generated
198     * @param detectedCorners automatically generated
199     * @param detectedIds automatically generated
200     * @param rejectedCorners automatically generated
201     * @param cameraMatrix automatically generated
202     * @param distCoeffs automatically generated
203     * @param minRepDistance automatically generated
204     */
205    @Deprecated
206    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance) {
207        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
208        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
209        refineDetectedMarkers_4(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance);
210        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
211        detectedCorners_mat.release();
212        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
213        rejectedCorners_mat.release();
214    }
215
216    /**
217     * refine detected markers
218     * @deprecated Use class ArucoDetector::refineDetectedMarkers
219     * @param image automatically generated
220     * @param board automatically generated
221     * @param detectedCorners automatically generated
222     * @param detectedIds automatically generated
223     * @param rejectedCorners automatically generated
224     * @param cameraMatrix automatically generated
225     * @param distCoeffs automatically generated
226     */
227    @Deprecated
228    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs) {
229        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
230        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
231        refineDetectedMarkers_5(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj);
232        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
233        detectedCorners_mat.release();
234        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
235        rejectedCorners_mat.release();
236    }
237
238    /**
239     * refine detected markers
240     * @deprecated Use class ArucoDetector::refineDetectedMarkers
241     * @param image automatically generated
242     * @param board automatically generated
243     * @param detectedCorners automatically generated
244     * @param detectedIds automatically generated
245     * @param rejectedCorners automatically generated
246     * @param cameraMatrix automatically generated
247     */
248    @Deprecated
249    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix) {
250        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
251        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
252        refineDetectedMarkers_6(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj);
253        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
254        detectedCorners_mat.release();
255        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
256        rejectedCorners_mat.release();
257    }
258
259    /**
260     * refine detected markers
261     * @deprecated Use class ArucoDetector::refineDetectedMarkers
262     * @param image automatically generated
263     * @param board automatically generated
264     * @param detectedCorners automatically generated
265     * @param detectedIds automatically generated
266     * @param rejectedCorners automatically generated
267     */
268    @Deprecated
269    public static void refineDetectedMarkers(Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners) {
270        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
271        Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
272        refineDetectedMarkers_7(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj);
273        Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
274        detectedCorners_mat.release();
275        Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
276        rejectedCorners_mat.release();
277    }
278
279
280    //
281    // C++:  void cv::aruco::drawPlanarBoard(Ptr_Board board, Size outSize, Mat& img, int marginSize, int borderBits)
282    //
283
284    /**
285     * draw planar board
286     * @deprecated Use Board::generateImage
287     * @param board automatically generated
288     * @param outSize automatically generated
289     * @param img automatically generated
290     * @param marginSize automatically generated
291     * @param borderBits automatically generated
292     */
293    @Deprecated
294    public static void drawPlanarBoard(Board board, Size outSize, Mat img, int marginSize, int borderBits) {
295        drawPlanarBoard_0(board.getNativeObjAddr(), outSize.width, outSize.height, img.nativeObj, marginSize, borderBits);
296    }
297
298
299    //
300    // C++:  void cv::aruco::getBoardObjectAndImagePoints(Ptr_Board board, vector_Mat detectedCorners, Mat detectedIds, Mat& objPoints, Mat& imgPoints)
301    //
302
303    /**
304     * get board object and image points
305     * @deprecated Use Board::matchImagePoints
306     * @param board automatically generated
307     * @param detectedCorners automatically generated
308     * @param detectedIds automatically generated
309     * @param objPoints automatically generated
310     * @param imgPoints automatically generated
311     */
312    @Deprecated
313    public static void getBoardObjectAndImagePoints(Board board, List<Mat> detectedCorners, Mat detectedIds, Mat objPoints, Mat imgPoints) {
314        Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
315        getBoardObjectAndImagePoints_0(board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, objPoints.nativeObj, imgPoints.nativeObj);
316    }
317
318
319    //
320    // C++:  int cv::aruco::estimatePoseBoard(vector_Mat corners, Mat ids, Ptr_Board board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
321    //
322
323    /**
324     * @deprecated Use cv::solvePnP
325     * @param corners automatically generated
326     * @param ids automatically generated
327     * @param board automatically generated
328     * @param cameraMatrix automatically generated
329     * @param distCoeffs automatically generated
330     * @param rvec automatically generated
331     * @param tvec automatically generated
332     * @param useExtrinsicGuess automatically generated
333     * @return automatically generated
334     */
335    @Deprecated
336    public static int estimatePoseBoard(List<Mat> corners, Mat ids, Board board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, boolean useExtrinsicGuess) {
337        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
338        return estimatePoseBoard_0(corners_mat.nativeObj, ids.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj, useExtrinsicGuess);
339    }
340
341    /**
342     * @deprecated Use cv::solvePnP
343     * @param corners automatically generated
344     * @param ids automatically generated
345     * @param board automatically generated
346     * @param cameraMatrix automatically generated
347     * @param distCoeffs automatically generated
348     * @param rvec automatically generated
349     * @param tvec automatically generated
350     * @return automatically generated
351     */
352    @Deprecated
353    public static int estimatePoseBoard(List<Mat> corners, Mat ids, Board board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec) {
354        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
355        return estimatePoseBoard_1(corners_mat.nativeObj, ids.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj);
356    }
357
358
359    //
360    // C++:  bool cv::aruco::estimatePoseCharucoBoard(Mat charucoCorners, Mat charucoIds, Ptr_CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
361    //
362
363    /**
364     * Pose estimation for a ChArUco board given some of their corners
365     * @param charucoCorners vector of detected charuco corners
366     * @param charucoIds list of identifiers for each corner in charucoCorners
367     * @param board layout of ChArUco board.
368     * @param cameraMatrix input 3x3 floating-point camera matrix
369     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
370     * @param distCoeffs vector of distortion coefficients
371     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
372     * @param rvec Output vector (e.g. cv::Mat) corresponding to the rotation vector of the board
373     * (see cv::Rodrigues).
374     * @param tvec Output vector (e.g. cv::Mat) corresponding to the translation vector of the board.
375     * @param useExtrinsicGuess defines whether initial guess for \b rvec and \b tvec will be used or not.
376     *
377     * This function estimates a Charuco board pose from some detected corners.
378     * The function checks if the input corners are enough and valid to perform pose estimation.
379     * If pose estimation is valid, returns true, else returns false.
380     * SEE: use cv::drawFrameAxes to get world coordinate system axis for object points
381     * @return automatically generated
382     */
383    public static boolean estimatePoseCharucoBoard(Mat charucoCorners, Mat charucoIds, CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, boolean useExtrinsicGuess) {
384        return estimatePoseCharucoBoard_0(charucoCorners.nativeObj, charucoIds.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj, useExtrinsicGuess);
385    }
386
387    /**
388     * Pose estimation for a ChArUco board given some of their corners
389     * @param charucoCorners vector of detected charuco corners
390     * @param charucoIds list of identifiers for each corner in charucoCorners
391     * @param board layout of ChArUco board.
392     * @param cameraMatrix input 3x3 floating-point camera matrix
393     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
394     * @param distCoeffs vector of distortion coefficients
395     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
396     * @param rvec Output vector (e.g. cv::Mat) corresponding to the rotation vector of the board
397     * (see cv::Rodrigues).
398     * @param tvec Output vector (e.g. cv::Mat) corresponding to the translation vector of the board.
399     *
400     * This function estimates a Charuco board pose from some detected corners.
401     * The function checks if the input corners are enough and valid to perform pose estimation.
402     * If pose estimation is valid, returns true, else returns false.
403     * SEE: use cv::drawFrameAxes to get world coordinate system axis for object points
404     * @return automatically generated
405     */
406    public static boolean estimatePoseCharucoBoard(Mat charucoCorners, Mat charucoIds, CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec) {
407        return estimatePoseCharucoBoard_1(charucoCorners.nativeObj, charucoIds.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj);
408    }
409
410
411    //
412    // C++:  void cv::aruco::estimatePoseSingleMarkers(vector_Mat corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat& rvecs, Mat& tvecs, Mat& objPoints = Mat(), Ptr_EstimateParameters estimateParameters = makePtr<EstimateParameters>())
413    //
414
415    /**
416     * @deprecated Use cv::solvePnP
417     * @param corners automatically generated
418     * @param markerLength automatically generated
419     * @param cameraMatrix automatically generated
420     * @param distCoeffs automatically generated
421     * @param rvecs automatically generated
422     * @param tvecs automatically generated
423     * @param objPoints automatically generated
424     * @param estimateParameters automatically generated
425     */
426    @Deprecated
427    public static void estimatePoseSingleMarkers(List<Mat> corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat rvecs, Mat tvecs, Mat objPoints, EstimateParameters estimateParameters) {
428        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
429        estimatePoseSingleMarkers_0(corners_mat.nativeObj, markerLength, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs.nativeObj, tvecs.nativeObj, objPoints.nativeObj, estimateParameters.getNativeObjAddr());
430    }
431
432    /**
433     * @deprecated Use cv::solvePnP
434     * @param corners automatically generated
435     * @param markerLength automatically generated
436     * @param cameraMatrix automatically generated
437     * @param distCoeffs automatically generated
438     * @param rvecs automatically generated
439     * @param tvecs automatically generated
440     * @param objPoints automatically generated
441     */
442    @Deprecated
443    public static void estimatePoseSingleMarkers(List<Mat> corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat rvecs, Mat tvecs, Mat objPoints) {
444        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
445        estimatePoseSingleMarkers_1(corners_mat.nativeObj, markerLength, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs.nativeObj, tvecs.nativeObj, objPoints.nativeObj);
446    }
447
448    /**
449     * @deprecated Use cv::solvePnP
450     * @param corners automatically generated
451     * @param markerLength automatically generated
452     * @param cameraMatrix automatically generated
453     * @param distCoeffs automatically generated
454     * @param rvecs automatically generated
455     * @param tvecs automatically generated
456     */
457    @Deprecated
458    public static void estimatePoseSingleMarkers(List<Mat> corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat rvecs, Mat tvecs) {
459        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
460        estimatePoseSingleMarkers_2(corners_mat.nativeObj, markerLength, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs.nativeObj, tvecs.nativeObj);
461    }
462
463
464    //
465    // C++:  bool cv::aruco::testCharucoCornersCollinear(Ptr_CharucoBoard board, Mat charucoIds)
466    //
467
468    /**
469     * @deprecated Use CharucoBoard::checkCharucoCornersCollinear
470     * @param board automatically generated
471     * @param charucoIds automatically generated
472     * @return automatically generated
473     */
474    @Deprecated
475    public static boolean testCharucoCornersCollinear(CharucoBoard board, Mat charucoIds) {
476        return testCharucoCornersCollinear_0(board.getNativeObjAddr(), charucoIds.nativeObj);
477    }
478
479
480    //
481    // C++:  double cv::aruco::calibrateCameraAruco(vector_Mat corners, Mat ids, Mat counter, Ptr_Board board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs, vector_Mat& tvecs, Mat& stdDeviationsIntrinsics, Mat& stdDeviationsExtrinsics, Mat& perViewErrors, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
482    //
483
484    /**
485     * Calibrate a camera using aruco markers
486     *
487     * @param corners vector of detected marker corners in all frames.
488     * The corners should have the same format returned by detectMarkers (see #detectMarkers).
489     * @param ids list of identifiers for each marker in corners
490     * @param counter number of markers in each frame so that corners and ids can be split
491     * @param board Marker Board layout
492     * @param imageSize Size of the image used only to initialize the intrinsic camera matrix.
493     * @param cameraMatrix Output 3x3 floating-point camera matrix
494     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV\_CALIB\_USE\_INTRINSIC\_GUESS
495     * and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be
496     * initialized before calling the function.
497     * @param distCoeffs Output vector of distortion coefficients
498     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
499     * @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each board view
500     * (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding
501     * k-th translation vector (see the next output parameter description) brings the board pattern
502     * from the model coordinate space (in which object points are specified) to the world coordinate
503     * space, that is, a real position of the board pattern in the k-th pattern view (k=0.. *M* -1).
504     * @param tvecs Output vector of translation vectors estimated for each pattern view.
505     * @param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
506     * Order of deviations values:
507     * \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3,
508     * s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero.
509     * @param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
510     * Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views,
511     * \(R_i, T_i\) are concatenated 1x3 vectors.
512     * @param perViewErrors Output vector of average re-projection errors estimated for each pattern view.
513     * @param flags flags Different flags  for the calibration process (see #calibrateCamera for details).
514     * @param criteria Termination criteria for the iterative optimization algorithm.
515     *
516     * This function calibrates a camera using an Aruco Board. The function receives a list of
517     * detected markers from several views of the Board. The process is similar to the chessboard
518     * calibration in calibrateCamera(). The function returns the final re-projection error.
519     * @return automatically generated
520     */
521    public static double calibrateCameraArucoExtended(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, Mat stdDeviationsIntrinsics, Mat stdDeviationsExtrinsics, Mat perViewErrors, int flags, TermCriteria criteria) {
522        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
523        Mat rvecs_mat = new Mat();
524        Mat tvecs_mat = new Mat();
525        double retVal = calibrateCameraArucoExtended_0(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, stdDeviationsIntrinsics.nativeObj, stdDeviationsExtrinsics.nativeObj, perViewErrors.nativeObj, flags, criteria.type, criteria.maxCount, criteria.epsilon);
526        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
527        rvecs_mat.release();
528        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
529        tvecs_mat.release();
530        return retVal;
531    }
532
533    /**
534     * Calibrate a camera using aruco markers
535     *
536     * @param corners vector of detected marker corners in all frames.
537     * The corners should have the same format returned by detectMarkers (see #detectMarkers).
538     * @param ids list of identifiers for each marker in corners
539     * @param counter number of markers in each frame so that corners and ids can be split
540     * @param board Marker Board layout
541     * @param imageSize Size of the image used only to initialize the intrinsic camera matrix.
542     * @param cameraMatrix Output 3x3 floating-point camera matrix
543     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV\_CALIB\_USE\_INTRINSIC\_GUESS
544     * and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be
545     * initialized before calling the function.
546     * @param distCoeffs Output vector of distortion coefficients
547     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
548     * @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each board view
549     * (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding
550     * k-th translation vector (see the next output parameter description) brings the board pattern
551     * from the model coordinate space (in which object points are specified) to the world coordinate
552     * space, that is, a real position of the board pattern in the k-th pattern view (k=0.. *M* -1).
553     * @param tvecs Output vector of translation vectors estimated for each pattern view.
554     * @param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
555     * Order of deviations values:
556     * \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3,
557     * s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero.
558     * @param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
559     * Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views,
560     * \(R_i, T_i\) are concatenated 1x3 vectors.
561     * @param perViewErrors Output vector of average re-projection errors estimated for each pattern view.
562     * @param flags flags Different flags  for the calibration process (see #calibrateCamera for details).
563     *
564     * This function calibrates a camera using an Aruco Board. The function receives a list of
565     * detected markers from several views of the Board. The process is similar to the chessboard
566     * calibration in calibrateCamera(). The function returns the final re-projection error.
567     * @return automatically generated
568     */
569    public static double calibrateCameraArucoExtended(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, Mat stdDeviationsIntrinsics, Mat stdDeviationsExtrinsics, Mat perViewErrors, int flags) {
570        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
571        Mat rvecs_mat = new Mat();
572        Mat tvecs_mat = new Mat();
573        double retVal = calibrateCameraArucoExtended_1(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, stdDeviationsIntrinsics.nativeObj, stdDeviationsExtrinsics.nativeObj, perViewErrors.nativeObj, flags);
574        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
575        rvecs_mat.release();
576        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
577        tvecs_mat.release();
578        return retVal;
579    }
580
581    /**
582     * Calibrate a camera using aruco markers
583     *
584     * @param corners vector of detected marker corners in all frames.
585     * The corners should have the same format returned by detectMarkers (see #detectMarkers).
586     * @param ids list of identifiers for each marker in corners
587     * @param counter number of markers in each frame so that corners and ids can be split
588     * @param board Marker Board layout
589     * @param imageSize Size of the image used only to initialize the intrinsic camera matrix.
590     * @param cameraMatrix Output 3x3 floating-point camera matrix
591     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV\_CALIB\_USE\_INTRINSIC\_GUESS
592     * and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be
593     * initialized before calling the function.
594     * @param distCoeffs Output vector of distortion coefficients
595     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
596     * @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each board view
597     * (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding
598     * k-th translation vector (see the next output parameter description) brings the board pattern
599     * from the model coordinate space (in which object points are specified) to the world coordinate
600     * space, that is, a real position of the board pattern in the k-th pattern view (k=0.. *M* -1).
601     * @param tvecs Output vector of translation vectors estimated for each pattern view.
602     * @param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
603     * Order of deviations values:
604     * \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3,
605     * s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero.
606     * @param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
607     * Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views,
608     * \(R_i, T_i\) are concatenated 1x3 vectors.
609     * @param perViewErrors Output vector of average re-projection errors estimated for each pattern view.
610     *
611     * This function calibrates a camera using an Aruco Board. The function receives a list of
612     * detected markers from several views of the Board. The process is similar to the chessboard
613     * calibration in calibrateCamera(). The function returns the final re-projection error.
614     * @return automatically generated
615     */
616    public static double calibrateCameraArucoExtended(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, Mat stdDeviationsIntrinsics, Mat stdDeviationsExtrinsics, Mat perViewErrors) {
617        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
618        Mat rvecs_mat = new Mat();
619        Mat tvecs_mat = new Mat();
620        double retVal = calibrateCameraArucoExtended_2(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, stdDeviationsIntrinsics.nativeObj, stdDeviationsExtrinsics.nativeObj, perViewErrors.nativeObj);
621        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
622        rvecs_mat.release();
623        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
624        tvecs_mat.release();
625        return retVal;
626    }
627
628
629    //
630    // C++:  double cv::aruco::calibrateCameraAruco(vector_Mat corners, Mat ids, Mat counter, Ptr_Board board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs = vector_Mat(), vector_Mat& tvecs = vector_Mat(), int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
631    //
632
633    /**
634     *
635     * It's the same function as #calibrateCameraAruco but without calibration error estimation.
636     * @param corners automatically generated
637     * @param ids automatically generated
638     * @param counter automatically generated
639     * @param board automatically generated
640     * @param imageSize automatically generated
641     * @param cameraMatrix automatically generated
642     * @param distCoeffs automatically generated
643     * @param rvecs automatically generated
644     * @param tvecs automatically generated
645     * @param flags automatically generated
646     * @param criteria automatically generated
647     * @return automatically generated
648     */
649    public static double calibrateCameraAruco(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, int flags, TermCriteria criteria) {
650        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
651        Mat rvecs_mat = new Mat();
652        Mat tvecs_mat = new Mat();
653        double retVal = calibrateCameraAruco_0(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, flags, criteria.type, criteria.maxCount, criteria.epsilon);
654        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
655        rvecs_mat.release();
656        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
657        tvecs_mat.release();
658        return retVal;
659    }
660
661    /**
662     *
663     * It's the same function as #calibrateCameraAruco but without calibration error estimation.
664     * @param corners automatically generated
665     * @param ids automatically generated
666     * @param counter automatically generated
667     * @param board automatically generated
668     * @param imageSize automatically generated
669     * @param cameraMatrix automatically generated
670     * @param distCoeffs automatically generated
671     * @param rvecs automatically generated
672     * @param tvecs automatically generated
673     * @param flags automatically generated
674     * @return automatically generated
675     */
676    public static double calibrateCameraAruco(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, int flags) {
677        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
678        Mat rvecs_mat = new Mat();
679        Mat tvecs_mat = new Mat();
680        double retVal = calibrateCameraAruco_1(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, flags);
681        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
682        rvecs_mat.release();
683        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
684        tvecs_mat.release();
685        return retVal;
686    }
687
688    /**
689     *
690     * It's the same function as #calibrateCameraAruco but without calibration error estimation.
691     * @param corners automatically generated
692     * @param ids automatically generated
693     * @param counter automatically generated
694     * @param board automatically generated
695     * @param imageSize automatically generated
696     * @param cameraMatrix automatically generated
697     * @param distCoeffs automatically generated
698     * @param rvecs automatically generated
699     * @param tvecs automatically generated
700     * @return automatically generated
701     */
702    public static double calibrateCameraAruco(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs) {
703        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
704        Mat rvecs_mat = new Mat();
705        Mat tvecs_mat = new Mat();
706        double retVal = calibrateCameraAruco_2(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj);
707        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
708        rvecs_mat.release();
709        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
710        tvecs_mat.release();
711        return retVal;
712    }
713
714    /**
715     *
716     * It's the same function as #calibrateCameraAruco but without calibration error estimation.
717     * @param corners automatically generated
718     * @param ids automatically generated
719     * @param counter automatically generated
720     * @param board automatically generated
721     * @param imageSize automatically generated
722     * @param cameraMatrix automatically generated
723     * @param distCoeffs automatically generated
724     * @param rvecs automatically generated
725     * @return automatically generated
726     */
727    public static double calibrateCameraAruco(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs) {
728        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
729        Mat rvecs_mat = new Mat();
730        double retVal = calibrateCameraAruco_3(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj);
731        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
732        rvecs_mat.release();
733        return retVal;
734    }
735
736    /**
737     *
738     * It's the same function as #calibrateCameraAruco but without calibration error estimation.
739     * @param corners automatically generated
740     * @param ids automatically generated
741     * @param counter automatically generated
742     * @param board automatically generated
743     * @param imageSize automatically generated
744     * @param cameraMatrix automatically generated
745     * @param distCoeffs automatically generated
746     * @return automatically generated
747     */
748    public static double calibrateCameraAruco(List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs) {
749        Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
750        return calibrateCameraAruco_4(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj);
751    }
752
753
754    //
755    // C++:  double cv::aruco::calibrateCameraCharuco(vector_Mat charucoCorners, vector_Mat charucoIds, Ptr_CharucoBoard board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs, vector_Mat& tvecs, Mat& stdDeviationsIntrinsics, Mat& stdDeviationsExtrinsics, Mat& perViewErrors, int flags = 0, TermCriteria criteria = TermCriteria( TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
756    //
757
758    /**
759     * Calibrate a camera using Charuco corners
760     *
761     * @param charucoCorners vector of detected charuco corners per frame
762     * @param charucoIds list of identifiers for each corner in charucoCorners per frame
763     * @param board Marker Board layout
764     * @param imageSize input image size
765     * @param cameraMatrix Output 3x3 floating-point camera matrix
766     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV\_CALIB\_USE\_INTRINSIC\_GUESS
767     * and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be
768     * initialized before calling the function.
769     * @param distCoeffs Output vector of distortion coefficients
770     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
771     * @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each board view
772     * (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding
773     * k-th translation vector (see the next output parameter description) brings the board pattern
774     * from the model coordinate space (in which object points are specified) to the world coordinate
775     * space, that is, a real position of the board pattern in the k-th pattern view (k=0.. *M* -1).
776     * @param tvecs Output vector of translation vectors estimated for each pattern view.
777     * @param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
778     * Order of deviations values:
779     * \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3,
780     * s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero.
781     * @param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
782     * Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views,
783     * \(R_i, T_i\) are concatenated 1x3 vectors.
784     * @param perViewErrors Output vector of average re-projection errors estimated for each pattern view.
785     * @param flags flags Different flags  for the calibration process (see #calibrateCamera for details).
786     * @param criteria Termination criteria for the iterative optimization algorithm.
787     *
788     * This function calibrates a camera using a set of corners of a  Charuco Board. The function
789     * receives a list of detected corners and its identifiers from several views of the Board.
790     * The function returns the final re-projection error.
791     * @return automatically generated
792     */
793    public static double calibrateCameraCharucoExtended(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, Mat stdDeviationsIntrinsics, Mat stdDeviationsExtrinsics, Mat perViewErrors, int flags, TermCriteria criteria) {
794        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
795        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
796        Mat rvecs_mat = new Mat();
797        Mat tvecs_mat = new Mat();
798        double retVal = calibrateCameraCharucoExtended_0(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, stdDeviationsIntrinsics.nativeObj, stdDeviationsExtrinsics.nativeObj, perViewErrors.nativeObj, flags, criteria.type, criteria.maxCount, criteria.epsilon);
799        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
800        rvecs_mat.release();
801        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
802        tvecs_mat.release();
803        return retVal;
804    }
805
806    /**
807     * Calibrate a camera using Charuco corners
808     *
809     * @param charucoCorners vector of detected charuco corners per frame
810     * @param charucoIds list of identifiers for each corner in charucoCorners per frame
811     * @param board Marker Board layout
812     * @param imageSize input image size
813     * @param cameraMatrix Output 3x3 floating-point camera matrix
814     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV\_CALIB\_USE\_INTRINSIC\_GUESS
815     * and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be
816     * initialized before calling the function.
817     * @param distCoeffs Output vector of distortion coefficients
818     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
819     * @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each board view
820     * (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding
821     * k-th translation vector (see the next output parameter description) brings the board pattern
822     * from the model coordinate space (in which object points are specified) to the world coordinate
823     * space, that is, a real position of the board pattern in the k-th pattern view (k=0.. *M* -1).
824     * @param tvecs Output vector of translation vectors estimated for each pattern view.
825     * @param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
826     * Order of deviations values:
827     * \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3,
828     * s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero.
829     * @param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
830     * Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views,
831     * \(R_i, T_i\) are concatenated 1x3 vectors.
832     * @param perViewErrors Output vector of average re-projection errors estimated for each pattern view.
833     * @param flags flags Different flags  for the calibration process (see #calibrateCamera for details).
834     *
835     * This function calibrates a camera using a set of corners of a  Charuco Board. The function
836     * receives a list of detected corners and its identifiers from several views of the Board.
837     * The function returns the final re-projection error.
838     * @return automatically generated
839     */
840    public static double calibrateCameraCharucoExtended(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, Mat stdDeviationsIntrinsics, Mat stdDeviationsExtrinsics, Mat perViewErrors, int flags) {
841        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
842        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
843        Mat rvecs_mat = new Mat();
844        Mat tvecs_mat = new Mat();
845        double retVal = calibrateCameraCharucoExtended_1(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, stdDeviationsIntrinsics.nativeObj, stdDeviationsExtrinsics.nativeObj, perViewErrors.nativeObj, flags);
846        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
847        rvecs_mat.release();
848        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
849        tvecs_mat.release();
850        return retVal;
851    }
852
853    /**
854     * Calibrate a camera using Charuco corners
855     *
856     * @param charucoCorners vector of detected charuco corners per frame
857     * @param charucoIds list of identifiers for each corner in charucoCorners per frame
858     * @param board Marker Board layout
859     * @param imageSize input image size
860     * @param cameraMatrix Output 3x3 floating-point camera matrix
861     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV\_CALIB\_USE\_INTRINSIC\_GUESS
862     * and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be
863     * initialized before calling the function.
864     * @param distCoeffs Output vector of distortion coefficients
865     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
866     * @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each board view
867     * (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding
868     * k-th translation vector (see the next output parameter description) brings the board pattern
869     * from the model coordinate space (in which object points are specified) to the world coordinate
870     * space, that is, a real position of the board pattern in the k-th pattern view (k=0.. *M* -1).
871     * @param tvecs Output vector of translation vectors estimated for each pattern view.
872     * @param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
873     * Order of deviations values:
874     * \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3,
875     * s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero.
876     * @param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
877     * Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views,
878     * \(R_i, T_i\) are concatenated 1x3 vectors.
879     * @param perViewErrors Output vector of average re-projection errors estimated for each pattern view.
880     *
881     * This function calibrates a camera using a set of corners of a  Charuco Board. The function
882     * receives a list of detected corners and its identifiers from several views of the Board.
883     * The function returns the final re-projection error.
884     * @return automatically generated
885     */
886    public static double calibrateCameraCharucoExtended(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, Mat stdDeviationsIntrinsics, Mat stdDeviationsExtrinsics, Mat perViewErrors) {
887        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
888        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
889        Mat rvecs_mat = new Mat();
890        Mat tvecs_mat = new Mat();
891        double retVal = calibrateCameraCharucoExtended_2(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, stdDeviationsIntrinsics.nativeObj, stdDeviationsExtrinsics.nativeObj, perViewErrors.nativeObj);
892        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
893        rvecs_mat.release();
894        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
895        tvecs_mat.release();
896        return retVal;
897    }
898
899
900    //
901    // C++:  double cv::aruco::calibrateCameraCharuco(vector_Mat charucoCorners, vector_Mat charucoIds, Ptr_CharucoBoard board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs = vector_Mat(), vector_Mat& tvecs = vector_Mat(), int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
902    //
903
904    /**
905     * It's the same function as #calibrateCameraCharuco but without calibration error estimation.
906     * @param charucoCorners automatically generated
907     * @param charucoIds automatically generated
908     * @param board automatically generated
909     * @param imageSize automatically generated
910     * @param cameraMatrix automatically generated
911     * @param distCoeffs automatically generated
912     * @param rvecs automatically generated
913     * @param tvecs automatically generated
914     * @param flags automatically generated
915     * @param criteria automatically generated
916     * @return automatically generated
917     */
918    public static double calibrateCameraCharuco(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, int flags, TermCriteria criteria) {
919        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
920        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
921        Mat rvecs_mat = new Mat();
922        Mat tvecs_mat = new Mat();
923        double retVal = calibrateCameraCharuco_0(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, flags, criteria.type, criteria.maxCount, criteria.epsilon);
924        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
925        rvecs_mat.release();
926        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
927        tvecs_mat.release();
928        return retVal;
929    }
930
931    /**
932     * It's the same function as #calibrateCameraCharuco but without calibration error estimation.
933     * @param charucoCorners automatically generated
934     * @param charucoIds automatically generated
935     * @param board automatically generated
936     * @param imageSize automatically generated
937     * @param cameraMatrix automatically generated
938     * @param distCoeffs automatically generated
939     * @param rvecs automatically generated
940     * @param tvecs automatically generated
941     * @param flags automatically generated
942     * @return automatically generated
943     */
944    public static double calibrateCameraCharuco(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs, int flags) {
945        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
946        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
947        Mat rvecs_mat = new Mat();
948        Mat tvecs_mat = new Mat();
949        double retVal = calibrateCameraCharuco_1(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, flags);
950        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
951        rvecs_mat.release();
952        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
953        tvecs_mat.release();
954        return retVal;
955    }
956
957    /**
958     * It's the same function as #calibrateCameraCharuco but without calibration error estimation.
959     * @param charucoCorners automatically generated
960     * @param charucoIds automatically generated
961     * @param board automatically generated
962     * @param imageSize automatically generated
963     * @param cameraMatrix automatically generated
964     * @param distCoeffs automatically generated
965     * @param rvecs automatically generated
966     * @param tvecs automatically generated
967     * @return automatically generated
968     */
969    public static double calibrateCameraCharuco(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs) {
970        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
971        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
972        Mat rvecs_mat = new Mat();
973        Mat tvecs_mat = new Mat();
974        double retVal = calibrateCameraCharuco_2(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj);
975        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
976        rvecs_mat.release();
977        Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
978        tvecs_mat.release();
979        return retVal;
980    }
981
982    /**
983     * It's the same function as #calibrateCameraCharuco but without calibration error estimation.
984     * @param charucoCorners automatically generated
985     * @param charucoIds automatically generated
986     * @param board automatically generated
987     * @param imageSize automatically generated
988     * @param cameraMatrix automatically generated
989     * @param distCoeffs automatically generated
990     * @param rvecs automatically generated
991     * @return automatically generated
992     */
993    public static double calibrateCameraCharuco(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs) {
994        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
995        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
996        Mat rvecs_mat = new Mat();
997        double retVal = calibrateCameraCharuco_3(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj);
998        Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
999        rvecs_mat.release();
1000        return retVal;
1001    }
1002
1003    /**
1004     * It's the same function as #calibrateCameraCharuco but without calibration error estimation.
1005     * @param charucoCorners automatically generated
1006     * @param charucoIds automatically generated
1007     * @param board automatically generated
1008     * @param imageSize automatically generated
1009     * @param cameraMatrix automatically generated
1010     * @param distCoeffs automatically generated
1011     * @return automatically generated
1012     */
1013    public static double calibrateCameraCharuco(List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs) {
1014        Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
1015        Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
1016        return calibrateCameraCharuco_4(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj);
1017    }
1018
1019
1020    //
1021    // C++:  int cv::aruco::interpolateCornersCharuco(vector_Mat markerCorners, Mat markerIds, Mat image, Ptr_CharucoBoard board, Mat& charucoCorners, Mat& charucoIds, Mat cameraMatrix = Mat(), Mat distCoeffs = Mat(), int minMarkers = 2)
1022    //
1023
1024    /**
1025     * Interpolate position of ChArUco board corners
1026     * @param markerCorners vector of already detected markers corners. For each marker, its four
1027     * corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the
1028     * dimensions of this array should be Nx4. The order of the corners should be clockwise.
1029     * @param markerIds list of identifiers for each marker in corners
1030     * @param image input image necesary for corner refinement. Note that markers are not detected and
1031     * should be sent in corners and ids parameters.
1032     * @param board layout of ChArUco board.
1033     * @param charucoCorners interpolated chessboard corners
1034     * @param charucoIds interpolated chessboard corners identifiers
1035     * @param cameraMatrix optional 3x3 floating-point camera matrix
1036     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
1037     * @param distCoeffs optional vector of distortion coefficients
1038     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
1039     * @param minMarkers number of adjacent markers that must be detected to return a charuco corner
1040     *
1041     * This function receives the detected markers and returns the 2D position of the chessboard corners
1042     * from a ChArUco board using the detected Aruco markers. If camera parameters are provided,
1043     * the process is based in an approximated pose estimation, else it is based on local homography.
1044     * Only visible corners are returned. For each corner, its corresponding identifier is
1045     * also returned in charucoIds.
1046     * The function returns the number of interpolated corners.
1047     *
1048     * @deprecated Use CharucoDetector::detectBoard
1049     * @return automatically generated
1050     */
1051    @Deprecated
1052    public static int interpolateCornersCharuco(List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds, Mat cameraMatrix, Mat distCoeffs, int minMarkers) {
1053        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1054        return interpolateCornersCharuco_0(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minMarkers);
1055    }
1056
1057    /**
1058     * Interpolate position of ChArUco board corners
1059     * @param markerCorners vector of already detected markers corners. For each marker, its four
1060     * corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the
1061     * dimensions of this array should be Nx4. The order of the corners should be clockwise.
1062     * @param markerIds list of identifiers for each marker in corners
1063     * @param image input image necesary for corner refinement. Note that markers are not detected and
1064     * should be sent in corners and ids parameters.
1065     * @param board layout of ChArUco board.
1066     * @param charucoCorners interpolated chessboard corners
1067     * @param charucoIds interpolated chessboard corners identifiers
1068     * @param cameraMatrix optional 3x3 floating-point camera matrix
1069     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
1070     * @param distCoeffs optional vector of distortion coefficients
1071     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
1072     *
1073     * This function receives the detected markers and returns the 2D position of the chessboard corners
1074     * from a ChArUco board using the detected Aruco markers. If camera parameters are provided,
1075     * the process is based in an approximated pose estimation, else it is based on local homography.
1076     * Only visible corners are returned. For each corner, its corresponding identifier is
1077     * also returned in charucoIds.
1078     * The function returns the number of interpolated corners.
1079     *
1080     * @deprecated Use CharucoDetector::detectBoard
1081     * @return automatically generated
1082     */
1083    @Deprecated
1084    public static int interpolateCornersCharuco(List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds, Mat cameraMatrix, Mat distCoeffs) {
1085        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1086        return interpolateCornersCharuco_1(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj);
1087    }
1088
1089    /**
1090     * Interpolate position of ChArUco board corners
1091     * @param markerCorners vector of already detected markers corners. For each marker, its four
1092     * corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the
1093     * dimensions of this array should be Nx4. The order of the corners should be clockwise.
1094     * @param markerIds list of identifiers for each marker in corners
1095     * @param image input image necesary for corner refinement. Note that markers are not detected and
1096     * should be sent in corners and ids parameters.
1097     * @param board layout of ChArUco board.
1098     * @param charucoCorners interpolated chessboard corners
1099     * @param charucoIds interpolated chessboard corners identifiers
1100     * @param cameraMatrix optional 3x3 floating-point camera matrix
1101     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
1102     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
1103     *
1104     * This function receives the detected markers and returns the 2D position of the chessboard corners
1105     * from a ChArUco board using the detected Aruco markers. If camera parameters are provided,
1106     * the process is based in an approximated pose estimation, else it is based on local homography.
1107     * Only visible corners are returned. For each corner, its corresponding identifier is
1108     * also returned in charucoIds.
1109     * The function returns the number of interpolated corners.
1110     *
1111     * @deprecated Use CharucoDetector::detectBoard
1112     * @return automatically generated
1113     */
1114    @Deprecated
1115    public static int interpolateCornersCharuco(List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds, Mat cameraMatrix) {
1116        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1117        return interpolateCornersCharuco_2(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj, cameraMatrix.nativeObj);
1118    }
1119
1120    /**
1121     * Interpolate position of ChArUco board corners
1122     * @param markerCorners vector of already detected markers corners. For each marker, its four
1123     * corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the
1124     * dimensions of this array should be Nx4. The order of the corners should be clockwise.
1125     * @param markerIds list of identifiers for each marker in corners
1126     * @param image input image necesary for corner refinement. Note that markers are not detected and
1127     * should be sent in corners and ids parameters.
1128     * @param board layout of ChArUco board.
1129     * @param charucoCorners interpolated chessboard corners
1130     * @param charucoIds interpolated chessboard corners identifiers
1131     * \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
1132     * \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements
1133     *
1134     * This function receives the detected markers and returns the 2D position of the chessboard corners
1135     * from a ChArUco board using the detected Aruco markers. If camera parameters are provided,
1136     * the process is based in an approximated pose estimation, else it is based on local homography.
1137     * Only visible corners are returned. For each corner, its corresponding identifier is
1138     * also returned in charucoIds.
1139     * The function returns the number of interpolated corners.
1140     *
1141     * @deprecated Use CharucoDetector::detectBoard
1142     * @return automatically generated
1143     */
1144    @Deprecated
1145    public static int interpolateCornersCharuco(List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds) {
1146        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1147        return interpolateCornersCharuco_3(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj);
1148    }
1149
1150
1151    //
1152    // C++:  void cv::aruco::detectCharucoDiamond(Mat image, vector_Mat markerCorners, Mat markerIds, float squareMarkerLengthRate, vector_Mat& diamondCorners, Mat& diamondIds, Mat cameraMatrix = Mat(), Mat distCoeffs = Mat(), Ptr_Dictionary dictionary = makePtr<Dictionary> (getPredefinedDictionary(PredefinedDictionaryType::DICT_4X4_50)))
1153    //
1154
1155    /**
1156     * Detect ChArUco Diamond markers
1157     *
1158     * @param image input image necessary for corner subpixel.
1159     * @param markerCorners list of detected marker corners from detectMarkers function.
1160     * @param markerIds list of marker ids in markerCorners.
1161     * @param squareMarkerLengthRate rate between square and marker length:
1162     * squareMarkerLengthRate = squareLength/markerLength. The real units are not necessary.
1163     * @param diamondCorners output list of detected diamond corners (4 corners per diamond). The order
1164     * is the same than in marker corners: top left, top right, bottom right and bottom left. Similar
1165     * format than the corners returned by detectMarkers (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ).
1166     * @param diamondIds ids of the diamonds in diamondCorners. The id of each diamond is in fact of
1167     * type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the
1168     * diamond.
1169     * @param cameraMatrix Optional camera calibration matrix.
1170     * @param distCoeffs Optional camera distortion coefficients.
1171     * @param dictionary dictionary of markers indicating the type of markers.
1172     *
1173     * This function detects Diamond markers from the previous detected ArUco markers. The diamonds
1174     * are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters
1175     * are provided, the diamond search is based on reprojection. If not, diamond search is based on
1176     * homography. Homography is faster than reprojection, but less accurate.
1177     *
1178     * @deprecated Use CharucoDetector::detectDiamonds
1179     */
1180    @Deprecated
1181    public static void detectCharucoDiamond(Mat image, List<Mat> markerCorners, Mat markerIds, float squareMarkerLengthRate, List<Mat> diamondCorners, Mat diamondIds, Mat cameraMatrix, Mat distCoeffs, Dictionary dictionary) {
1182        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1183        Mat diamondCorners_mat = new Mat();
1184        detectCharucoDiamond_0(image.nativeObj, markerCorners_mat.nativeObj, markerIds.nativeObj, squareMarkerLengthRate, diamondCorners_mat.nativeObj, diamondIds.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, dictionary.getNativeObjAddr());
1185        Converters.Mat_to_vector_Mat(diamondCorners_mat, diamondCorners);
1186        diamondCorners_mat.release();
1187    }
1188
1189    /**
1190     * Detect ChArUco Diamond markers
1191     *
1192     * @param image input image necessary for corner subpixel.
1193     * @param markerCorners list of detected marker corners from detectMarkers function.
1194     * @param markerIds list of marker ids in markerCorners.
1195     * @param squareMarkerLengthRate rate between square and marker length:
1196     * squareMarkerLengthRate = squareLength/markerLength. The real units are not necessary.
1197     * @param diamondCorners output list of detected diamond corners (4 corners per diamond). The order
1198     * is the same than in marker corners: top left, top right, bottom right and bottom left. Similar
1199     * format than the corners returned by detectMarkers (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ).
1200     * @param diamondIds ids of the diamonds in diamondCorners. The id of each diamond is in fact of
1201     * type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the
1202     * diamond.
1203     * @param cameraMatrix Optional camera calibration matrix.
1204     * @param distCoeffs Optional camera distortion coefficients.
1205     *
1206     * This function detects Diamond markers from the previous detected ArUco markers. The diamonds
1207     * are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters
1208     * are provided, the diamond search is based on reprojection. If not, diamond search is based on
1209     * homography. Homography is faster than reprojection, but less accurate.
1210     *
1211     * @deprecated Use CharucoDetector::detectDiamonds
1212     */
1213    @Deprecated
1214    public static void detectCharucoDiamond(Mat image, List<Mat> markerCorners, Mat markerIds, float squareMarkerLengthRate, List<Mat> diamondCorners, Mat diamondIds, Mat cameraMatrix, Mat distCoeffs) {
1215        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1216        Mat diamondCorners_mat = new Mat();
1217        detectCharucoDiamond_1(image.nativeObj, markerCorners_mat.nativeObj, markerIds.nativeObj, squareMarkerLengthRate, diamondCorners_mat.nativeObj, diamondIds.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj);
1218        Converters.Mat_to_vector_Mat(diamondCorners_mat, diamondCorners);
1219        diamondCorners_mat.release();
1220    }
1221
1222    /**
1223     * Detect ChArUco Diamond markers
1224     *
1225     * @param image input image necessary for corner subpixel.
1226     * @param markerCorners list of detected marker corners from detectMarkers function.
1227     * @param markerIds list of marker ids in markerCorners.
1228     * @param squareMarkerLengthRate rate between square and marker length:
1229     * squareMarkerLengthRate = squareLength/markerLength. The real units are not necessary.
1230     * @param diamondCorners output list of detected diamond corners (4 corners per diamond). The order
1231     * is the same than in marker corners: top left, top right, bottom right and bottom left. Similar
1232     * format than the corners returned by detectMarkers (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ).
1233     * @param diamondIds ids of the diamonds in diamondCorners. The id of each diamond is in fact of
1234     * type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the
1235     * diamond.
1236     * @param cameraMatrix Optional camera calibration matrix.
1237     *
1238     * This function detects Diamond markers from the previous detected ArUco markers. The diamonds
1239     * are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters
1240     * are provided, the diamond search is based on reprojection. If not, diamond search is based on
1241     * homography. Homography is faster than reprojection, but less accurate.
1242     *
1243     * @deprecated Use CharucoDetector::detectDiamonds
1244     */
1245    @Deprecated
1246    public static void detectCharucoDiamond(Mat image, List<Mat> markerCorners, Mat markerIds, float squareMarkerLengthRate, List<Mat> diamondCorners, Mat diamondIds, Mat cameraMatrix) {
1247        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1248        Mat diamondCorners_mat = new Mat();
1249        detectCharucoDiamond_2(image.nativeObj, markerCorners_mat.nativeObj, markerIds.nativeObj, squareMarkerLengthRate, diamondCorners_mat.nativeObj, diamondIds.nativeObj, cameraMatrix.nativeObj);
1250        Converters.Mat_to_vector_Mat(diamondCorners_mat, diamondCorners);
1251        diamondCorners_mat.release();
1252    }
1253
1254    /**
1255     * Detect ChArUco Diamond markers
1256     *
1257     * @param image input image necessary for corner subpixel.
1258     * @param markerCorners list of detected marker corners from detectMarkers function.
1259     * @param markerIds list of marker ids in markerCorners.
1260     * @param squareMarkerLengthRate rate between square and marker length:
1261     * squareMarkerLengthRate = squareLength/markerLength. The real units are not necessary.
1262     * @param diamondCorners output list of detected diamond corners (4 corners per diamond). The order
1263     * is the same than in marker corners: top left, top right, bottom right and bottom left. Similar
1264     * format than the corners returned by detectMarkers (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ).
1265     * @param diamondIds ids of the diamonds in diamondCorners. The id of each diamond is in fact of
1266     * type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the
1267     * diamond.
1268     *
1269     * This function detects Diamond markers from the previous detected ArUco markers. The diamonds
1270     * are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters
1271     * are provided, the diamond search is based on reprojection. If not, diamond search is based on
1272     * homography. Homography is faster than reprojection, but less accurate.
1273     *
1274     * @deprecated Use CharucoDetector::detectDiamonds
1275     */
1276    @Deprecated
1277    public static void detectCharucoDiamond(Mat image, List<Mat> markerCorners, Mat markerIds, float squareMarkerLengthRate, List<Mat> diamondCorners, Mat diamondIds) {
1278        Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
1279        Mat diamondCorners_mat = new Mat();
1280        detectCharucoDiamond_3(image.nativeObj, markerCorners_mat.nativeObj, markerIds.nativeObj, squareMarkerLengthRate, diamondCorners_mat.nativeObj, diamondIds.nativeObj);
1281        Converters.Mat_to_vector_Mat(diamondCorners_mat, diamondCorners);
1282        diamondCorners_mat.release();
1283    }
1284
1285
1286    //
1287    // C++:  void cv::aruco::drawCharucoDiamond(Ptr_Dictionary dictionary, Vec4i ids, int squareLength, int markerLength, Mat& img, int marginSize = 0, int borderBits = 1)
1288    //
1289
1290    // Unknown type 'Vec4i' (I), skipping the function
1291
1292
1293
1294
1295    // C++:  void cv::aruco::detectMarkers(Mat image, Ptr_Dictionary dictionary, vector_Mat& corners, Mat& ids, Ptr_DetectorParameters parameters = makePtr<DetectorParameters>(), vector_Mat& rejectedImgPoints = vector_Mat())
1296    private static native void detectMarkers_0(long image_nativeObj, long dictionary_nativeObj, long corners_mat_nativeObj, long ids_nativeObj, long parameters_nativeObj, long rejectedImgPoints_mat_nativeObj);
1297    private static native void detectMarkers_1(long image_nativeObj, long dictionary_nativeObj, long corners_mat_nativeObj, long ids_nativeObj, long parameters_nativeObj);
1298    private static native void detectMarkers_2(long image_nativeObj, long dictionary_nativeObj, long corners_mat_nativeObj, long ids_nativeObj);
1299
1300    // C++:  void cv::aruco::refineDetectedMarkers(Mat image, Ptr_Board board, vector_Mat& detectedCorners, Mat& detectedIds, vector_Mat& rejectedCorners, Mat cameraMatrix = Mat(), Mat distCoeffs = Mat(), float minRepDistance = 10.f, float errorCorrectionRate = 3.f, bool checkAllOrders = true, Mat& recoveredIdxs = Mat(), Ptr_DetectorParameters parameters = makePtr<DetectorParameters>())
1301    private static native void refineDetectedMarkers_0(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate, boolean checkAllOrders, long recoveredIdxs_nativeObj, long parameters_nativeObj);
1302    private static native void refineDetectedMarkers_1(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate, boolean checkAllOrders, long recoveredIdxs_nativeObj);
1303    private static native void refineDetectedMarkers_2(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate, boolean checkAllOrders);
1304    private static native void refineDetectedMarkers_3(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate);
1305    private static native void refineDetectedMarkers_4(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, float minRepDistance);
1306    private static native void refineDetectedMarkers_5(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj);
1307    private static native void refineDetectedMarkers_6(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj, long cameraMatrix_nativeObj);
1308    private static native void refineDetectedMarkers_7(long image_nativeObj, long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long rejectedCorners_mat_nativeObj);
1309
1310    // C++:  void cv::aruco::drawPlanarBoard(Ptr_Board board, Size outSize, Mat& img, int marginSize, int borderBits)
1311    private static native void drawPlanarBoard_0(long board_nativeObj, double outSize_width, double outSize_height, long img_nativeObj, int marginSize, int borderBits);
1312
1313    // C++:  void cv::aruco::getBoardObjectAndImagePoints(Ptr_Board board, vector_Mat detectedCorners, Mat detectedIds, Mat& objPoints, Mat& imgPoints)
1314    private static native void getBoardObjectAndImagePoints_0(long board_nativeObj, long detectedCorners_mat_nativeObj, long detectedIds_nativeObj, long objPoints_nativeObj, long imgPoints_nativeObj);
1315
1316    // C++:  int cv::aruco::estimatePoseBoard(vector_Mat corners, Mat ids, Ptr_Board board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
1317    private static native int estimatePoseBoard_0(long corners_mat_nativeObj, long ids_nativeObj, long board_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvec_nativeObj, long tvec_nativeObj, boolean useExtrinsicGuess);
1318    private static native int estimatePoseBoard_1(long corners_mat_nativeObj, long ids_nativeObj, long board_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvec_nativeObj, long tvec_nativeObj);
1319
1320    // C++:  bool cv::aruco::estimatePoseCharucoBoard(Mat charucoCorners, Mat charucoIds, Ptr_CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
1321    private static native boolean estimatePoseCharucoBoard_0(long charucoCorners_nativeObj, long charucoIds_nativeObj, long board_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvec_nativeObj, long tvec_nativeObj, boolean useExtrinsicGuess);
1322    private static native boolean estimatePoseCharucoBoard_1(long charucoCorners_nativeObj, long charucoIds_nativeObj, long board_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvec_nativeObj, long tvec_nativeObj);
1323
1324    // C++:  void cv::aruco::estimatePoseSingleMarkers(vector_Mat corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat& rvecs, Mat& tvecs, Mat& objPoints = Mat(), Ptr_EstimateParameters estimateParameters = makePtr<EstimateParameters>())
1325    private static native void estimatePoseSingleMarkers_0(long corners_mat_nativeObj, float markerLength, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_nativeObj, long tvecs_nativeObj, long objPoints_nativeObj, long estimateParameters_nativeObj);
1326    private static native void estimatePoseSingleMarkers_1(long corners_mat_nativeObj, float markerLength, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_nativeObj, long tvecs_nativeObj, long objPoints_nativeObj);
1327    private static native void estimatePoseSingleMarkers_2(long corners_mat_nativeObj, float markerLength, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_nativeObj, long tvecs_nativeObj);
1328
1329    // C++:  bool cv::aruco::testCharucoCornersCollinear(Ptr_CharucoBoard board, Mat charucoIds)
1330    private static native boolean testCharucoCornersCollinear_0(long board_nativeObj, long charucoIds_nativeObj);
1331
1332    // C++:  double cv::aruco::calibrateCameraAruco(vector_Mat corners, Mat ids, Mat counter, Ptr_Board board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs, vector_Mat& tvecs, Mat& stdDeviationsIntrinsics, Mat& stdDeviationsExtrinsics, Mat& perViewErrors, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
1333    private static native double calibrateCameraArucoExtended_0(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, long stdDeviationsIntrinsics_nativeObj, long stdDeviationsExtrinsics_nativeObj, long perViewErrors_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
1334    private static native double calibrateCameraArucoExtended_1(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, long stdDeviationsIntrinsics_nativeObj, long stdDeviationsExtrinsics_nativeObj, long perViewErrors_nativeObj, int flags);
1335    private static native double calibrateCameraArucoExtended_2(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, long stdDeviationsIntrinsics_nativeObj, long stdDeviationsExtrinsics_nativeObj, long perViewErrors_nativeObj);
1336
1337    // C++:  double cv::aruco::calibrateCameraAruco(vector_Mat corners, Mat ids, Mat counter, Ptr_Board board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs = vector_Mat(), vector_Mat& tvecs = vector_Mat(), int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
1338    private static native double calibrateCameraAruco_0(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
1339    private static native double calibrateCameraAruco_1(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, int flags);
1340    private static native double calibrateCameraAruco_2(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj);
1341    private static native double calibrateCameraAruco_3(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj);
1342    private static native double calibrateCameraAruco_4(long corners_mat_nativeObj, long ids_nativeObj, long counter_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj);
1343
1344    // C++:  double cv::aruco::calibrateCameraCharuco(vector_Mat charucoCorners, vector_Mat charucoIds, Ptr_CharucoBoard board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs, vector_Mat& tvecs, Mat& stdDeviationsIntrinsics, Mat& stdDeviationsExtrinsics, Mat& perViewErrors, int flags = 0, TermCriteria criteria = TermCriteria( TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
1345    private static native double calibrateCameraCharucoExtended_0(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, long stdDeviationsIntrinsics_nativeObj, long stdDeviationsExtrinsics_nativeObj, long perViewErrors_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
1346    private static native double calibrateCameraCharucoExtended_1(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, long stdDeviationsIntrinsics_nativeObj, long stdDeviationsExtrinsics_nativeObj, long perViewErrors_nativeObj, int flags);
1347    private static native double calibrateCameraCharucoExtended_2(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, long stdDeviationsIntrinsics_nativeObj, long stdDeviationsExtrinsics_nativeObj, long perViewErrors_nativeObj);
1348
1349    // C++:  double cv::aruco::calibrateCameraCharuco(vector_Mat charucoCorners, vector_Mat charucoIds, Ptr_CharucoBoard board, Size imageSize, Mat& cameraMatrix, Mat& distCoeffs, vector_Mat& rvecs = vector_Mat(), vector_Mat& tvecs = vector_Mat(), int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
1350    private static native double calibrateCameraCharuco_0(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
1351    private static native double calibrateCameraCharuco_1(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj, int flags);
1352    private static native double calibrateCameraCharuco_2(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj, long tvecs_mat_nativeObj);
1353    private static native double calibrateCameraCharuco_3(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long rvecs_mat_nativeObj);
1354    private static native double calibrateCameraCharuco_4(long charucoCorners_mat_nativeObj, long charucoIds_mat_nativeObj, long board_nativeObj, double imageSize_width, double imageSize_height, long cameraMatrix_nativeObj, long distCoeffs_nativeObj);
1355
1356    // C++:  int cv::aruco::interpolateCornersCharuco(vector_Mat markerCorners, Mat markerIds, Mat image, Ptr_CharucoBoard board, Mat& charucoCorners, Mat& charucoIds, Mat cameraMatrix = Mat(), Mat distCoeffs = Mat(), int minMarkers = 2)
1357    private static native int interpolateCornersCharuco_0(long markerCorners_mat_nativeObj, long markerIds_nativeObj, long image_nativeObj, long board_nativeObj, long charucoCorners_nativeObj, long charucoIds_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, int minMarkers);
1358    private static native int interpolateCornersCharuco_1(long markerCorners_mat_nativeObj, long markerIds_nativeObj, long image_nativeObj, long board_nativeObj, long charucoCorners_nativeObj, long charucoIds_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj);
1359    private static native int interpolateCornersCharuco_2(long markerCorners_mat_nativeObj, long markerIds_nativeObj, long image_nativeObj, long board_nativeObj, long charucoCorners_nativeObj, long charucoIds_nativeObj, long cameraMatrix_nativeObj);
1360    private static native int interpolateCornersCharuco_3(long markerCorners_mat_nativeObj, long markerIds_nativeObj, long image_nativeObj, long board_nativeObj, long charucoCorners_nativeObj, long charucoIds_nativeObj);
1361
1362    // C++:  void cv::aruco::detectCharucoDiamond(Mat image, vector_Mat markerCorners, Mat markerIds, float squareMarkerLengthRate, vector_Mat& diamondCorners, Mat& diamondIds, Mat cameraMatrix = Mat(), Mat distCoeffs = Mat(), Ptr_Dictionary dictionary = makePtr<Dictionary> (getPredefinedDictionary(PredefinedDictionaryType::DICT_4X4_50)))
1363    private static native void detectCharucoDiamond_0(long image_nativeObj, long markerCorners_mat_nativeObj, long markerIds_nativeObj, float squareMarkerLengthRate, long diamondCorners_mat_nativeObj, long diamondIds_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj, long dictionary_nativeObj);
1364    private static native void detectCharucoDiamond_1(long image_nativeObj, long markerCorners_mat_nativeObj, long markerIds_nativeObj, float squareMarkerLengthRate, long diamondCorners_mat_nativeObj, long diamondIds_nativeObj, long cameraMatrix_nativeObj, long distCoeffs_nativeObj);
1365    private static native void detectCharucoDiamond_2(long image_nativeObj, long markerCorners_mat_nativeObj, long markerIds_nativeObj, float squareMarkerLengthRate, long diamondCorners_mat_nativeObj, long diamondIds_nativeObj, long cameraMatrix_nativeObj);
1366    private static native void detectCharucoDiamond_3(long image_nativeObj, long markerCorners_mat_nativeObj, long markerIds_nativeObj, float squareMarkerLengthRate, long diamondCorners_mat_nativeObj, long diamondIds_nativeObj);
1367
1368}