Aruco.cs 99 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523
  1. 
  2. using OpenCVForUnity.CoreModule;
  3. using OpenCVForUnity.UtilsModule;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Runtime.InteropServices;
  7. namespace OpenCVForUnity.ArucoModule
  8. {
  9. // C++: class Aruco
  10. //javadoc: Aruco
  11. public class Aruco
  12. {
  13. // C++: enum CornerRefineMethod
  14. public const int CORNER_REFINE_NONE = 0;
  15. public const int CORNER_REFINE_SUBPIX = 1;
  16. public const int CORNER_REFINE_CONTOUR = 2;
  17. public const int CORNER_REFINE_APRILTAG = 3;
  18. // C++: enum PREDEFINED_DICTIONARY_NAME
  19. public const int DICT_4X4_50 = 0;
  20. public const int DICT_4X4_100 = 0 + 1;
  21. public const int DICT_4X4_250 = 0 + 2;
  22. public const int DICT_4X4_1000 = 0 + 3;
  23. public const int DICT_5X5_50 = 0 + 4;
  24. public const int DICT_5X5_100 = 0 + 5;
  25. public const int DICT_5X5_250 = 0 + 6;
  26. public const int DICT_5X5_1000 = 0 + 7;
  27. public const int DICT_6X6_50 = 0 + 8;
  28. public const int DICT_6X6_100 = 0 + 9;
  29. public const int DICT_6X6_250 = 0 + 10;
  30. public const int DICT_6X6_1000 = 0 + 11;
  31. public const int DICT_7X7_50 = 0 + 12;
  32. public const int DICT_7X7_100 = 0 + 13;
  33. public const int DICT_7X7_250 = 0 + 14;
  34. public const int DICT_7X7_1000 = 0 + 15;
  35. public const int DICT_ARUCO_ORIGINAL = 0 + 16;
  36. public const int DICT_APRILTAG_16h5 = 0 + 17;
  37. public const int DICT_APRILTAG_25h9 = 0 + 18;
  38. public const int DICT_APRILTAG_36h10 = 0 + 19;
  39. public const int DICT_APRILTAG_36h11 = 0 + 20;
  40. //
  41. // C++: Ptr_Dictionary cv::aruco::generateCustomDictionary(int nMarkers, int markerSize, Ptr_Dictionary baseDictionary, int randomSeed = 0)
  42. //
  43. //javadoc: custom_dictionary_from(nMarkers, markerSize, baseDictionary, randomSeed)
  44. public static Dictionary custom_dictionary_from (int nMarkers, int markerSize, Dictionary baseDictionary, int randomSeed)
  45. {
  46. if (baseDictionary != null) baseDictionary.ThrowIfDisposed ();
  47. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  48. Dictionary retVal = Dictionary.__fromPtr__(aruco_Aruco_custom_1dictionary_1from_10(nMarkers, markerSize, baseDictionary.getNativeObjAddr(), randomSeed));
  49. return retVal;
  50. #else
  51. return null;
  52. #endif
  53. }
  54. //javadoc: custom_dictionary_from(nMarkers, markerSize, baseDictionary)
  55. public static Dictionary custom_dictionary_from (int nMarkers, int markerSize, Dictionary baseDictionary)
  56. {
  57. if (baseDictionary != null) baseDictionary.ThrowIfDisposed ();
  58. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  59. Dictionary retVal = Dictionary.__fromPtr__(aruco_Aruco_custom_1dictionary_1from_11(nMarkers, markerSize, baseDictionary.getNativeObjAddr()));
  60. return retVal;
  61. #else
  62. return null;
  63. #endif
  64. }
  65. //
  66. // C++: Ptr_Dictionary cv::aruco::generateCustomDictionary(int nMarkers, int markerSize, int randomSeed = 0)
  67. //
  68. //javadoc: custom_dictionary(nMarkers, markerSize, randomSeed)
  69. public static Dictionary custom_dictionary (int nMarkers, int markerSize, int randomSeed)
  70. {
  71. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  72. Dictionary retVal = Dictionary.__fromPtr__(aruco_Aruco_custom_1dictionary_10(nMarkers, markerSize, randomSeed));
  73. return retVal;
  74. #else
  75. return null;
  76. #endif
  77. }
  78. //javadoc: custom_dictionary(nMarkers, markerSize)
  79. public static Dictionary custom_dictionary (int nMarkers, int markerSize)
  80. {
  81. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  82. Dictionary retVal = Dictionary.__fromPtr__(aruco_Aruco_custom_1dictionary_11(nMarkers, markerSize));
  83. return retVal;
  84. #else
  85. return null;
  86. #endif
  87. }
  88. //
  89. // C++: Ptr_Dictionary cv::aruco::getPredefinedDictionary(int dict)
  90. //
  91. //javadoc: getPredefinedDictionary(dict)
  92. public static Dictionary getPredefinedDictionary (int dict)
  93. {
  94. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  95. Dictionary retVal = Dictionary.__fromPtr__(aruco_Aruco_getPredefinedDictionary_10(dict));
  96. return retVal;
  97. #else
  98. return null;
  99. #endif
  100. }
  101. //
  102. // C++: bool cv::aruco::estimatePoseCharucoBoard(Mat charucoCorners, Mat charucoIds, Ptr_CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
  103. //
  104. //javadoc: estimatePoseCharucoBoard(charucoCorners, charucoIds, board, cameraMatrix, distCoeffs, rvec, tvec, useExtrinsicGuess)
  105. public static bool estimatePoseCharucoBoard (Mat charucoCorners, Mat charucoIds, CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, bool useExtrinsicGuess)
  106. {
  107. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  108. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  109. if (board != null) board.ThrowIfDisposed ();
  110. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  111. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  112. if (rvec != null) rvec.ThrowIfDisposed ();
  113. if (tvec != null) tvec.ThrowIfDisposed ();
  114. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  115. bool retVal = aruco_Aruco_estimatePoseCharucoBoard_10(charucoCorners.nativeObj, charucoIds.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj, useExtrinsicGuess);
  116. return retVal;
  117. #else
  118. return false;
  119. #endif
  120. }
  121. //javadoc: estimatePoseCharucoBoard(charucoCorners, charucoIds, board, cameraMatrix, distCoeffs, rvec, tvec)
  122. public static bool estimatePoseCharucoBoard (Mat charucoCorners, Mat charucoIds, CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec)
  123. {
  124. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  125. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  126. if (board != null) board.ThrowIfDisposed ();
  127. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  128. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  129. if (rvec != null) rvec.ThrowIfDisposed ();
  130. if (tvec != null) tvec.ThrowIfDisposed ();
  131. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  132. bool retVal = aruco_Aruco_estimatePoseCharucoBoard_11(charucoCorners.nativeObj, charucoIds.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj);
  133. return retVal;
  134. #else
  135. return false;
  136. #endif
  137. }
  138. //
  139. // 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))
  140. //
  141. //javadoc: calibrateCameraArucoExtended(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors, flags, criteria)
  142. 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)
  143. {
  144. if (ids != null) ids.ThrowIfDisposed ();
  145. if (counter != null) counter.ThrowIfDisposed ();
  146. if (board != null) board.ThrowIfDisposed ();
  147. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  148. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  149. if (stdDeviationsIntrinsics != null) stdDeviationsIntrinsics.ThrowIfDisposed ();
  150. if (stdDeviationsExtrinsics != null) stdDeviationsExtrinsics.ThrowIfDisposed ();
  151. if (perViewErrors != null) perViewErrors.ThrowIfDisposed ();
  152. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  153. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  154. Mat rvecs_mat = new Mat();
  155. Mat tvecs_mat = new Mat();
  156. double retVal = aruco_Aruco_calibrateCameraArucoExtended_10(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);
  157. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  158. rvecs_mat.release();
  159. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  160. tvecs_mat.release();
  161. return retVal;
  162. #else
  163. return -1;
  164. #endif
  165. }
  166. //javadoc: calibrateCameraArucoExtended(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors, flags)
  167. 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)
  168. {
  169. if (ids != null) ids.ThrowIfDisposed ();
  170. if (counter != null) counter.ThrowIfDisposed ();
  171. if (board != null) board.ThrowIfDisposed ();
  172. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  173. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  174. if (stdDeviationsIntrinsics != null) stdDeviationsIntrinsics.ThrowIfDisposed ();
  175. if (stdDeviationsExtrinsics != null) stdDeviationsExtrinsics.ThrowIfDisposed ();
  176. if (perViewErrors != null) perViewErrors.ThrowIfDisposed ();
  177. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  178. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  179. Mat rvecs_mat = new Mat();
  180. Mat tvecs_mat = new Mat();
  181. double retVal = aruco_Aruco_calibrateCameraArucoExtended_11(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);
  182. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  183. rvecs_mat.release();
  184. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  185. tvecs_mat.release();
  186. return retVal;
  187. #else
  188. return -1;
  189. #endif
  190. }
  191. //javadoc: calibrateCameraArucoExtended(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors)
  192. 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)
  193. {
  194. if (ids != null) ids.ThrowIfDisposed ();
  195. if (counter != null) counter.ThrowIfDisposed ();
  196. if (board != null) board.ThrowIfDisposed ();
  197. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  198. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  199. if (stdDeviationsIntrinsics != null) stdDeviationsIntrinsics.ThrowIfDisposed ();
  200. if (stdDeviationsExtrinsics != null) stdDeviationsExtrinsics.ThrowIfDisposed ();
  201. if (perViewErrors != null) perViewErrors.ThrowIfDisposed ();
  202. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  203. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  204. Mat rvecs_mat = new Mat();
  205. Mat tvecs_mat = new Mat();
  206. double retVal = aruco_Aruco_calibrateCameraArucoExtended_12(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);
  207. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  208. rvecs_mat.release();
  209. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  210. tvecs_mat.release();
  211. return retVal;
  212. #else
  213. return -1;
  214. #endif
  215. }
  216. //
  217. // 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))
  218. //
  219. //javadoc: calibrateCameraAruco(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, flags, criteria)
  220. 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)
  221. {
  222. if (ids != null) ids.ThrowIfDisposed ();
  223. if (counter != null) counter.ThrowIfDisposed ();
  224. if (board != null) board.ThrowIfDisposed ();
  225. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  226. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  227. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  228. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  229. Mat rvecs_mat = new Mat();
  230. Mat tvecs_mat = new Mat();
  231. double retVal = aruco_Aruco_calibrateCameraAruco_10(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);
  232. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  233. rvecs_mat.release();
  234. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  235. tvecs_mat.release();
  236. return retVal;
  237. #else
  238. return -1;
  239. #endif
  240. }
  241. //javadoc: calibrateCameraAruco(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, flags)
  242. 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)
  243. {
  244. if (ids != null) ids.ThrowIfDisposed ();
  245. if (counter != null) counter.ThrowIfDisposed ();
  246. if (board != null) board.ThrowIfDisposed ();
  247. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  248. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  249. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  250. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  251. Mat rvecs_mat = new Mat();
  252. Mat tvecs_mat = new Mat();
  253. double retVal = aruco_Aruco_calibrateCameraAruco_11(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, flags);
  254. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  255. rvecs_mat.release();
  256. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  257. tvecs_mat.release();
  258. return retVal;
  259. #else
  260. return -1;
  261. #endif
  262. }
  263. //javadoc: calibrateCameraAruco(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs)
  264. 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)
  265. {
  266. if (ids != null) ids.ThrowIfDisposed ();
  267. if (counter != null) counter.ThrowIfDisposed ();
  268. if (board != null) board.ThrowIfDisposed ();
  269. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  270. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  271. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  272. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  273. Mat rvecs_mat = new Mat();
  274. Mat tvecs_mat = new Mat();
  275. double retVal = aruco_Aruco_calibrateCameraAruco_12(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj);
  276. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  277. rvecs_mat.release();
  278. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  279. tvecs_mat.release();
  280. return retVal;
  281. #else
  282. return -1;
  283. #endif
  284. }
  285. //javadoc: calibrateCameraAruco(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs, rvecs)
  286. public static double calibrateCameraAruco (List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs)
  287. {
  288. if (ids != null) ids.ThrowIfDisposed ();
  289. if (counter != null) counter.ThrowIfDisposed ();
  290. if (board != null) board.ThrowIfDisposed ();
  291. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  292. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  293. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  294. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  295. Mat rvecs_mat = new Mat();
  296. double retVal = aruco_Aruco_calibrateCameraAruco_13(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj);
  297. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  298. rvecs_mat.release();
  299. return retVal;
  300. #else
  301. return -1;
  302. #endif
  303. }
  304. //javadoc: calibrateCameraAruco(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs)
  305. public static double calibrateCameraAruco (List<Mat> corners, Mat ids, Mat counter, Board board, Size imageSize, Mat cameraMatrix, Mat distCoeffs)
  306. {
  307. if (ids != null) ids.ThrowIfDisposed ();
  308. if (counter != null) counter.ThrowIfDisposed ();
  309. if (board != null) board.ThrowIfDisposed ();
  310. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  311. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  312. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  313. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  314. double retVal = aruco_Aruco_calibrateCameraAruco_14(corners_mat.nativeObj, ids.nativeObj, counter.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj);
  315. return retVal;
  316. #else
  317. return -1;
  318. #endif
  319. }
  320. //
  321. // 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))
  322. //
  323. //javadoc: calibrateCameraCharucoExtended(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors, flags, criteria)
  324. 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)
  325. {
  326. if (board != null) board.ThrowIfDisposed ();
  327. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  328. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  329. if (stdDeviationsIntrinsics != null) stdDeviationsIntrinsics.ThrowIfDisposed ();
  330. if (stdDeviationsExtrinsics != null) stdDeviationsExtrinsics.ThrowIfDisposed ();
  331. if (perViewErrors != null) perViewErrors.ThrowIfDisposed ();
  332. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  333. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  334. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  335. Mat rvecs_mat = new Mat();
  336. Mat tvecs_mat = new Mat();
  337. double retVal = aruco_Aruco_calibrateCameraCharucoExtended_10(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);
  338. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  339. rvecs_mat.release();
  340. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  341. tvecs_mat.release();
  342. return retVal;
  343. #else
  344. return -1;
  345. #endif
  346. }
  347. //javadoc: calibrateCameraCharucoExtended(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors, flags)
  348. 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)
  349. {
  350. if (board != null) board.ThrowIfDisposed ();
  351. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  352. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  353. if (stdDeviationsIntrinsics != null) stdDeviationsIntrinsics.ThrowIfDisposed ();
  354. if (stdDeviationsExtrinsics != null) stdDeviationsExtrinsics.ThrowIfDisposed ();
  355. if (perViewErrors != null) perViewErrors.ThrowIfDisposed ();
  356. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  357. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  358. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  359. Mat rvecs_mat = new Mat();
  360. Mat tvecs_mat = new Mat();
  361. double retVal = aruco_Aruco_calibrateCameraCharucoExtended_11(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);
  362. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  363. rvecs_mat.release();
  364. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  365. tvecs_mat.release();
  366. return retVal;
  367. #else
  368. return -1;
  369. #endif
  370. }
  371. //javadoc: calibrateCameraCharucoExtended(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors)
  372. 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)
  373. {
  374. if (board != null) board.ThrowIfDisposed ();
  375. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  376. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  377. if (stdDeviationsIntrinsics != null) stdDeviationsIntrinsics.ThrowIfDisposed ();
  378. if (stdDeviationsExtrinsics != null) stdDeviationsExtrinsics.ThrowIfDisposed ();
  379. if (perViewErrors != null) perViewErrors.ThrowIfDisposed ();
  380. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  381. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  382. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  383. Mat rvecs_mat = new Mat();
  384. Mat tvecs_mat = new Mat();
  385. double retVal = aruco_Aruco_calibrateCameraCharucoExtended_12(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);
  386. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  387. rvecs_mat.release();
  388. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  389. tvecs_mat.release();
  390. return retVal;
  391. #else
  392. return -1;
  393. #endif
  394. }
  395. //
  396. // 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))
  397. //
  398. //javadoc: calibrateCameraCharuco(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, flags, criteria)
  399. 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)
  400. {
  401. if (board != null) board.ThrowIfDisposed ();
  402. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  403. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  404. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  405. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  406. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  407. Mat rvecs_mat = new Mat();
  408. Mat tvecs_mat = new Mat();
  409. double retVal = aruco_Aruco_calibrateCameraCharuco_10(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);
  410. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  411. rvecs_mat.release();
  412. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  413. tvecs_mat.release();
  414. return retVal;
  415. #else
  416. return -1;
  417. #endif
  418. }
  419. //javadoc: calibrateCameraCharuco(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, flags)
  420. 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)
  421. {
  422. if (board != null) board.ThrowIfDisposed ();
  423. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  424. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  425. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  426. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  427. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  428. Mat rvecs_mat = new Mat();
  429. Mat tvecs_mat = new Mat();
  430. double retVal = aruco_Aruco_calibrateCameraCharuco_11(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj, flags);
  431. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  432. rvecs_mat.release();
  433. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  434. tvecs_mat.release();
  435. return retVal;
  436. #else
  437. return -1;
  438. #endif
  439. }
  440. //javadoc: calibrateCameraCharuco(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs)
  441. public static double calibrateCameraCharuco (List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs, List<Mat> tvecs)
  442. {
  443. if (board != null) board.ThrowIfDisposed ();
  444. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  445. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  446. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  447. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  448. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  449. Mat rvecs_mat = new Mat();
  450. Mat tvecs_mat = new Mat();
  451. double retVal = aruco_Aruco_calibrateCameraCharuco_12(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj, tvecs_mat.nativeObj);
  452. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  453. rvecs_mat.release();
  454. Converters.Mat_to_vector_Mat(tvecs_mat, tvecs);
  455. tvecs_mat.release();
  456. return retVal;
  457. #else
  458. return -1;
  459. #endif
  460. }
  461. //javadoc: calibrateCameraCharuco(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs, rvecs)
  462. public static double calibrateCameraCharuco (List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs, List<Mat> rvecs)
  463. {
  464. if (board != null) board.ThrowIfDisposed ();
  465. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  466. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  467. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  468. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  469. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  470. Mat rvecs_mat = new Mat();
  471. double retVal = aruco_Aruco_calibrateCameraCharuco_13(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs_mat.nativeObj);
  472. Converters.Mat_to_vector_Mat(rvecs_mat, rvecs);
  473. rvecs_mat.release();
  474. return retVal;
  475. #else
  476. return -1;
  477. #endif
  478. }
  479. //javadoc: calibrateCameraCharuco(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs)
  480. public static double calibrateCameraCharuco (List<Mat> charucoCorners, List<Mat> charucoIds, CharucoBoard board, Size imageSize, Mat cameraMatrix, Mat distCoeffs)
  481. {
  482. if (board != null) board.ThrowIfDisposed ();
  483. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  484. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  485. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  486. Mat charucoCorners_mat = Converters.vector_Mat_to_Mat(charucoCorners);
  487. Mat charucoIds_mat = Converters.vector_Mat_to_Mat(charucoIds);
  488. double retVal = aruco_Aruco_calibrateCameraCharuco_14(charucoCorners_mat.nativeObj, charucoIds_mat.nativeObj, board.getNativeObjAddr(), imageSize.width, imageSize.height, cameraMatrix.nativeObj, distCoeffs.nativeObj);
  489. return retVal;
  490. #else
  491. return -1;
  492. #endif
  493. }
  494. //
  495. // C++: int cv::aruco::estimatePoseBoard(vector_Mat corners, Mat ids, Ptr_Board board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
  496. //
  497. //javadoc: estimatePoseBoard(corners, ids, board, cameraMatrix, distCoeffs, rvec, tvec, useExtrinsicGuess)
  498. public static int estimatePoseBoard (List<Mat> corners, Mat ids, Board board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, bool useExtrinsicGuess)
  499. {
  500. if (ids != null) ids.ThrowIfDisposed ();
  501. if (board != null) board.ThrowIfDisposed ();
  502. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  503. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  504. if (rvec != null) rvec.ThrowIfDisposed ();
  505. if (tvec != null) tvec.ThrowIfDisposed ();
  506. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  507. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  508. int retVal = aruco_Aruco_estimatePoseBoard_10(corners_mat.nativeObj, ids.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj, useExtrinsicGuess);
  509. return retVal;
  510. #else
  511. return -1;
  512. #endif
  513. }
  514. //javadoc: estimatePoseBoard(corners, ids, board, cameraMatrix, distCoeffs, rvec, tvec)
  515. public static int estimatePoseBoard (List<Mat> corners, Mat ids, Board board, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec)
  516. {
  517. if (ids != null) ids.ThrowIfDisposed ();
  518. if (board != null) board.ThrowIfDisposed ();
  519. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  520. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  521. if (rvec != null) rvec.ThrowIfDisposed ();
  522. if (tvec != null) tvec.ThrowIfDisposed ();
  523. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  524. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  525. int retVal = aruco_Aruco_estimatePoseBoard_11(corners_mat.nativeObj, ids.nativeObj, board.getNativeObjAddr(), cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj);
  526. return retVal;
  527. #else
  528. return -1;
  529. #endif
  530. }
  531. //
  532. // 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)
  533. //
  534. //javadoc: interpolateCornersCharuco(markerCorners, markerIds, image, board, charucoCorners, charucoIds, cameraMatrix, distCoeffs, minMarkers)
  535. public static int interpolateCornersCharuco (List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds, Mat cameraMatrix, Mat distCoeffs, int minMarkers)
  536. {
  537. if (markerIds != null) markerIds.ThrowIfDisposed ();
  538. if (image != null) image.ThrowIfDisposed ();
  539. if (board != null) board.ThrowIfDisposed ();
  540. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  541. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  542. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  543. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  544. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  545. Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
  546. int retVal = aruco_Aruco_interpolateCornersCharuco_10(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minMarkers);
  547. return retVal;
  548. #else
  549. return -1;
  550. #endif
  551. }
  552. //javadoc: interpolateCornersCharuco(markerCorners, markerIds, image, board, charucoCorners, charucoIds, cameraMatrix, distCoeffs)
  553. public static int interpolateCornersCharuco (List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds, Mat cameraMatrix, Mat distCoeffs)
  554. {
  555. if (markerIds != null) markerIds.ThrowIfDisposed ();
  556. if (image != null) image.ThrowIfDisposed ();
  557. if (board != null) board.ThrowIfDisposed ();
  558. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  559. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  560. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  561. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  562. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  563. Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
  564. int retVal = aruco_Aruco_interpolateCornersCharuco_11(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj);
  565. return retVal;
  566. #else
  567. return -1;
  568. #endif
  569. }
  570. //javadoc: interpolateCornersCharuco(markerCorners, markerIds, image, board, charucoCorners, charucoIds, cameraMatrix)
  571. public static int interpolateCornersCharuco (List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds, Mat cameraMatrix)
  572. {
  573. if (markerIds != null) markerIds.ThrowIfDisposed ();
  574. if (image != null) image.ThrowIfDisposed ();
  575. if (board != null) board.ThrowIfDisposed ();
  576. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  577. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  578. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  579. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  580. Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
  581. int retVal = aruco_Aruco_interpolateCornersCharuco_12(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj, cameraMatrix.nativeObj);
  582. return retVal;
  583. #else
  584. return -1;
  585. #endif
  586. }
  587. //javadoc: interpolateCornersCharuco(markerCorners, markerIds, image, board, charucoCorners, charucoIds)
  588. public static int interpolateCornersCharuco (List<Mat> markerCorners, Mat markerIds, Mat image, CharucoBoard board, Mat charucoCorners, Mat charucoIds)
  589. {
  590. if (markerIds != null) markerIds.ThrowIfDisposed ();
  591. if (image != null) image.ThrowIfDisposed ();
  592. if (board != null) board.ThrowIfDisposed ();
  593. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  594. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  595. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  596. Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
  597. int retVal = aruco_Aruco_interpolateCornersCharuco_13(markerCorners_mat.nativeObj, markerIds.nativeObj, image.nativeObj, board.getNativeObjAddr(), charucoCorners.nativeObj, charucoIds.nativeObj);
  598. return retVal;
  599. #else
  600. return -1;
  601. #endif
  602. }
  603. //
  604. // 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())
  605. //
  606. //javadoc: detectCharucoDiamond(image, markerCorners, markerIds, squareMarkerLengthRate, diamondCorners, diamondIds, cameraMatrix, distCoeffs)
  607. public static void detectCharucoDiamond (Mat image, List<Mat> markerCorners, Mat markerIds, float squareMarkerLengthRate, List<Mat> diamondCorners, Mat diamondIds, Mat cameraMatrix, Mat distCoeffs)
  608. {
  609. if (image != null) image.ThrowIfDisposed ();
  610. if (markerIds != null) markerIds.ThrowIfDisposed ();
  611. if (diamondIds != null) diamondIds.ThrowIfDisposed ();
  612. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  613. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  614. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  615. Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
  616. Mat diamondCorners_mat = new Mat();
  617. aruco_Aruco_detectCharucoDiamond_10(image.nativeObj, markerCorners_mat.nativeObj, markerIds.nativeObj, squareMarkerLengthRate, diamondCorners_mat.nativeObj, diamondIds.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj);
  618. Converters.Mat_to_vector_Mat(diamondCorners_mat, diamondCorners);
  619. diamondCorners_mat.release();
  620. return;
  621. #else
  622. return;
  623. #endif
  624. }
  625. //javadoc: detectCharucoDiamond(image, markerCorners, markerIds, squareMarkerLengthRate, diamondCorners, diamondIds, cameraMatrix)
  626. public static void detectCharucoDiamond (Mat image, List<Mat> markerCorners, Mat markerIds, float squareMarkerLengthRate, List<Mat> diamondCorners, Mat diamondIds, Mat cameraMatrix)
  627. {
  628. if (image != null) image.ThrowIfDisposed ();
  629. if (markerIds != null) markerIds.ThrowIfDisposed ();
  630. if (diamondIds != null) diamondIds.ThrowIfDisposed ();
  631. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  632. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  633. Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
  634. Mat diamondCorners_mat = new Mat();
  635. aruco_Aruco_detectCharucoDiamond_11(image.nativeObj, markerCorners_mat.nativeObj, markerIds.nativeObj, squareMarkerLengthRate, diamondCorners_mat.nativeObj, diamondIds.nativeObj, cameraMatrix.nativeObj);
  636. Converters.Mat_to_vector_Mat(diamondCorners_mat, diamondCorners);
  637. diamondCorners_mat.release();
  638. return;
  639. #else
  640. return;
  641. #endif
  642. }
  643. //javadoc: detectCharucoDiamond(image, markerCorners, markerIds, squareMarkerLengthRate, diamondCorners, diamondIds)
  644. public static void detectCharucoDiamond (Mat image, List<Mat> markerCorners, Mat markerIds, float squareMarkerLengthRate, List<Mat> diamondCorners, Mat diamondIds)
  645. {
  646. if (image != null) image.ThrowIfDisposed ();
  647. if (markerIds != null) markerIds.ThrowIfDisposed ();
  648. if (diamondIds != null) diamondIds.ThrowIfDisposed ();
  649. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  650. Mat markerCorners_mat = Converters.vector_Mat_to_Mat(markerCorners);
  651. Mat diamondCorners_mat = new Mat();
  652. aruco_Aruco_detectCharucoDiamond_12(image.nativeObj, markerCorners_mat.nativeObj, markerIds.nativeObj, squareMarkerLengthRate, diamondCorners_mat.nativeObj, diamondIds.nativeObj);
  653. Converters.Mat_to_vector_Mat(diamondCorners_mat, diamondCorners);
  654. diamondCorners_mat.release();
  655. return;
  656. #else
  657. return;
  658. #endif
  659. }
  660. //
  661. // C++: void cv::aruco::detectMarkers(Mat image, Ptr_Dictionary dictionary, vector_Mat& corners, Mat& ids, Ptr_DetectorParameters parameters = DetectorParameters::create(), vector_Mat& rejectedImgPoints = vector_Mat(), Mat cameraMatrix = Mat(), Mat distCoeff = Mat())
  662. //
  663. //javadoc: detectMarkers(image, dictionary, corners, ids, parameters, rejectedImgPoints, cameraMatrix, distCoeff)
  664. public static void detectMarkers (Mat image, Dictionary dictionary, List<Mat> corners, Mat ids, DetectorParameters parameters, List<Mat> rejectedImgPoints, Mat cameraMatrix, Mat distCoeff)
  665. {
  666. if (image != null) image.ThrowIfDisposed ();
  667. if (dictionary != null) dictionary.ThrowIfDisposed ();
  668. if (ids != null) ids.ThrowIfDisposed ();
  669. if (parameters != null) parameters.ThrowIfDisposed ();
  670. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  671. if (distCoeff != null) distCoeff.ThrowIfDisposed ();
  672. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  673. Mat corners_mat = new Mat();
  674. Mat rejectedImgPoints_mat = new Mat();
  675. aruco_Aruco_detectMarkers_10(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj, parameters.getNativeObjAddr(), rejectedImgPoints_mat.nativeObj, cameraMatrix.nativeObj, distCoeff.nativeObj);
  676. Converters.Mat_to_vector_Mat(corners_mat, corners);
  677. corners_mat.release();
  678. Converters.Mat_to_vector_Mat(rejectedImgPoints_mat, rejectedImgPoints);
  679. rejectedImgPoints_mat.release();
  680. return;
  681. #else
  682. return;
  683. #endif
  684. }
  685. //javadoc: detectMarkers(image, dictionary, corners, ids, parameters, rejectedImgPoints, cameraMatrix)
  686. public static void detectMarkers (Mat image, Dictionary dictionary, List<Mat> corners, Mat ids, DetectorParameters parameters, List<Mat> rejectedImgPoints, Mat cameraMatrix)
  687. {
  688. if (image != null) image.ThrowIfDisposed ();
  689. if (dictionary != null) dictionary.ThrowIfDisposed ();
  690. if (ids != null) ids.ThrowIfDisposed ();
  691. if (parameters != null) parameters.ThrowIfDisposed ();
  692. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  693. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  694. Mat corners_mat = new Mat();
  695. Mat rejectedImgPoints_mat = new Mat();
  696. aruco_Aruco_detectMarkers_11(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj, parameters.getNativeObjAddr(), rejectedImgPoints_mat.nativeObj, cameraMatrix.nativeObj);
  697. Converters.Mat_to_vector_Mat(corners_mat, corners);
  698. corners_mat.release();
  699. Converters.Mat_to_vector_Mat(rejectedImgPoints_mat, rejectedImgPoints);
  700. rejectedImgPoints_mat.release();
  701. return;
  702. #else
  703. return;
  704. #endif
  705. }
  706. //javadoc: detectMarkers(image, dictionary, corners, ids, parameters, rejectedImgPoints)
  707. public static void detectMarkers (Mat image, Dictionary dictionary, List<Mat> corners, Mat ids, DetectorParameters parameters, List<Mat> rejectedImgPoints)
  708. {
  709. if (image != null) image.ThrowIfDisposed ();
  710. if (dictionary != null) dictionary.ThrowIfDisposed ();
  711. if (ids != null) ids.ThrowIfDisposed ();
  712. if (parameters != null) parameters.ThrowIfDisposed ();
  713. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  714. Mat corners_mat = new Mat();
  715. Mat rejectedImgPoints_mat = new Mat();
  716. aruco_Aruco_detectMarkers_12(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj, parameters.getNativeObjAddr(), rejectedImgPoints_mat.nativeObj);
  717. Converters.Mat_to_vector_Mat(corners_mat, corners);
  718. corners_mat.release();
  719. Converters.Mat_to_vector_Mat(rejectedImgPoints_mat, rejectedImgPoints);
  720. rejectedImgPoints_mat.release();
  721. return;
  722. #else
  723. return;
  724. #endif
  725. }
  726. //javadoc: detectMarkers(image, dictionary, corners, ids, parameters)
  727. public static void detectMarkers (Mat image, Dictionary dictionary, List<Mat> corners, Mat ids, DetectorParameters parameters)
  728. {
  729. if (image != null) image.ThrowIfDisposed ();
  730. if (dictionary != null) dictionary.ThrowIfDisposed ();
  731. if (ids != null) ids.ThrowIfDisposed ();
  732. if (parameters != null) parameters.ThrowIfDisposed ();
  733. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  734. Mat corners_mat = new Mat();
  735. aruco_Aruco_detectMarkers_13(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj, parameters.getNativeObjAddr());
  736. Converters.Mat_to_vector_Mat(corners_mat, corners);
  737. corners_mat.release();
  738. return;
  739. #else
  740. return;
  741. #endif
  742. }
  743. //javadoc: detectMarkers(image, dictionary, corners, ids)
  744. public static void detectMarkers (Mat image, Dictionary dictionary, List<Mat> corners, Mat ids)
  745. {
  746. if (image != null) image.ThrowIfDisposed ();
  747. if (dictionary != null) dictionary.ThrowIfDisposed ();
  748. if (ids != null) ids.ThrowIfDisposed ();
  749. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  750. Mat corners_mat = new Mat();
  751. aruco_Aruco_detectMarkers_14(image.nativeObj, dictionary.getNativeObjAddr(), corners_mat.nativeObj, ids.nativeObj);
  752. Converters.Mat_to_vector_Mat(corners_mat, corners);
  753. corners_mat.release();
  754. return;
  755. #else
  756. return;
  757. #endif
  758. }
  759. //
  760. // C++: void cv::aruco::drawAxis(Mat& image, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, float length)
  761. //
  762. //javadoc: drawAxis(image, cameraMatrix, distCoeffs, rvec, tvec, length)
  763. public static void drawAxis (Mat image, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, float length)
  764. {
  765. if (image != null) image.ThrowIfDisposed ();
  766. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  767. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  768. if (rvec != null) rvec.ThrowIfDisposed ();
  769. if (tvec != null) tvec.ThrowIfDisposed ();
  770. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  771. aruco_Aruco_drawAxis_10(image.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvec.nativeObj, tvec.nativeObj, length);
  772. return;
  773. #else
  774. return;
  775. #endif
  776. }
  777. //
  778. // C++: void cv::aruco::drawDetectedCornersCharuco(Mat& image, Mat charucoCorners, Mat charucoIds = Mat(), Scalar cornerColor = Scalar(255, 0, 0))
  779. //
  780. //javadoc: drawDetectedCornersCharuco(image, charucoCorners, charucoIds, cornerColor)
  781. public static void drawDetectedCornersCharuco (Mat image, Mat charucoCorners, Mat charucoIds, Scalar cornerColor)
  782. {
  783. if (image != null) image.ThrowIfDisposed ();
  784. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  785. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  786. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  787. aruco_Aruco_drawDetectedCornersCharuco_10(image.nativeObj, charucoCorners.nativeObj, charucoIds.nativeObj, cornerColor.val[0], cornerColor.val[1], cornerColor.val[2], cornerColor.val[3]);
  788. return;
  789. #else
  790. return;
  791. #endif
  792. }
  793. //javadoc: drawDetectedCornersCharuco(image, charucoCorners, charucoIds)
  794. public static void drawDetectedCornersCharuco (Mat image, Mat charucoCorners, Mat charucoIds)
  795. {
  796. if (image != null) image.ThrowIfDisposed ();
  797. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  798. if (charucoIds != null) charucoIds.ThrowIfDisposed ();
  799. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  800. aruco_Aruco_drawDetectedCornersCharuco_11(image.nativeObj, charucoCorners.nativeObj, charucoIds.nativeObj);
  801. return;
  802. #else
  803. return;
  804. #endif
  805. }
  806. //javadoc: drawDetectedCornersCharuco(image, charucoCorners)
  807. public static void drawDetectedCornersCharuco (Mat image, Mat charucoCorners)
  808. {
  809. if (image != null) image.ThrowIfDisposed ();
  810. if (charucoCorners != null) charucoCorners.ThrowIfDisposed ();
  811. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  812. aruco_Aruco_drawDetectedCornersCharuco_12(image.nativeObj, charucoCorners.nativeObj);
  813. return;
  814. #else
  815. return;
  816. #endif
  817. }
  818. //
  819. // C++: void cv::aruco::drawDetectedDiamonds(Mat& image, vector_Mat diamondCorners, Mat diamondIds = Mat(), Scalar borderColor = Scalar(0, 0, 255))
  820. //
  821. //javadoc: drawDetectedDiamonds(image, diamondCorners, diamondIds, borderColor)
  822. public static void drawDetectedDiamonds (Mat image, List<Mat> diamondCorners, Mat diamondIds, Scalar borderColor)
  823. {
  824. if (image != null) image.ThrowIfDisposed ();
  825. if (diamondIds != null) diamondIds.ThrowIfDisposed ();
  826. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  827. Mat diamondCorners_mat = Converters.vector_Mat_to_Mat(diamondCorners);
  828. aruco_Aruco_drawDetectedDiamonds_10(image.nativeObj, diamondCorners_mat.nativeObj, diamondIds.nativeObj, borderColor.val[0], borderColor.val[1], borderColor.val[2], borderColor.val[3]);
  829. return;
  830. #else
  831. return;
  832. #endif
  833. }
  834. //javadoc: drawDetectedDiamonds(image, diamondCorners, diamondIds)
  835. public static void drawDetectedDiamonds (Mat image, List<Mat> diamondCorners, Mat diamondIds)
  836. {
  837. if (image != null) image.ThrowIfDisposed ();
  838. if (diamondIds != null) diamondIds.ThrowIfDisposed ();
  839. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  840. Mat diamondCorners_mat = Converters.vector_Mat_to_Mat(diamondCorners);
  841. aruco_Aruco_drawDetectedDiamonds_11(image.nativeObj, diamondCorners_mat.nativeObj, diamondIds.nativeObj);
  842. return;
  843. #else
  844. return;
  845. #endif
  846. }
  847. //javadoc: drawDetectedDiamonds(image, diamondCorners)
  848. public static void drawDetectedDiamonds (Mat image, List<Mat> diamondCorners)
  849. {
  850. if (image != null) image.ThrowIfDisposed ();
  851. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  852. Mat diamondCorners_mat = Converters.vector_Mat_to_Mat(diamondCorners);
  853. aruco_Aruco_drawDetectedDiamonds_12(image.nativeObj, diamondCorners_mat.nativeObj);
  854. return;
  855. #else
  856. return;
  857. #endif
  858. }
  859. //
  860. // C++: void cv::aruco::drawDetectedMarkers(Mat& image, vector_Mat corners, Mat ids = Mat(), Scalar borderColor = Scalar(0, 255, 0))
  861. //
  862. //javadoc: drawDetectedMarkers(image, corners, ids, borderColor)
  863. public static void drawDetectedMarkers (Mat image, List<Mat> corners, Mat ids, Scalar borderColor)
  864. {
  865. if (image != null) image.ThrowIfDisposed ();
  866. if (ids != null) ids.ThrowIfDisposed ();
  867. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  868. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  869. aruco_Aruco_drawDetectedMarkers_10(image.nativeObj, corners_mat.nativeObj, ids.nativeObj, borderColor.val[0], borderColor.val[1], borderColor.val[2], borderColor.val[3]);
  870. return;
  871. #else
  872. return;
  873. #endif
  874. }
  875. //javadoc: drawDetectedMarkers(image, corners, ids)
  876. public static void drawDetectedMarkers (Mat image, List<Mat> corners, Mat ids)
  877. {
  878. if (image != null) image.ThrowIfDisposed ();
  879. if (ids != null) ids.ThrowIfDisposed ();
  880. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  881. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  882. aruco_Aruco_drawDetectedMarkers_11(image.nativeObj, corners_mat.nativeObj, ids.nativeObj);
  883. return;
  884. #else
  885. return;
  886. #endif
  887. }
  888. //javadoc: drawDetectedMarkers(image, corners)
  889. public static void drawDetectedMarkers (Mat image, List<Mat> corners)
  890. {
  891. if (image != null) image.ThrowIfDisposed ();
  892. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  893. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  894. aruco_Aruco_drawDetectedMarkers_12(image.nativeObj, corners_mat.nativeObj);
  895. return;
  896. #else
  897. return;
  898. #endif
  899. }
  900. //
  901. // C++: void cv::aruco::drawMarker(Ptr_Dictionary dictionary, int id, int sidePixels, Mat& img, int borderBits = 1)
  902. //
  903. //javadoc: drawMarker(dictionary, id, sidePixels, img, borderBits)
  904. public static void drawMarker (Dictionary dictionary, int id, int sidePixels, Mat img, int borderBits)
  905. {
  906. if (dictionary != null) dictionary.ThrowIfDisposed ();
  907. if (img != null) img.ThrowIfDisposed ();
  908. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  909. aruco_Aruco_drawMarker_10(dictionary.getNativeObjAddr(), id, sidePixels, img.nativeObj, borderBits);
  910. return;
  911. #else
  912. return;
  913. #endif
  914. }
  915. //javadoc: drawMarker(dictionary, id, sidePixels, img)
  916. public static void drawMarker (Dictionary dictionary, int id, int sidePixels, Mat img)
  917. {
  918. if (dictionary != null) dictionary.ThrowIfDisposed ();
  919. if (img != null) img.ThrowIfDisposed ();
  920. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  921. aruco_Aruco_drawMarker_11(dictionary.getNativeObjAddr(), id, sidePixels, img.nativeObj);
  922. return;
  923. #else
  924. return;
  925. #endif
  926. }
  927. //
  928. // C++: void cv::aruco::drawPlanarBoard(Ptr_Board board, Size outSize, Mat& img, int marginSize = 0, int borderBits = 1)
  929. //
  930. //javadoc: drawPlanarBoard(board, outSize, img, marginSize, borderBits)
  931. public static void drawPlanarBoard (Board board, Size outSize, Mat img, int marginSize, int borderBits)
  932. {
  933. if (board != null) board.ThrowIfDisposed ();
  934. if (img != null) img.ThrowIfDisposed ();
  935. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  936. aruco_Aruco_drawPlanarBoard_10(board.getNativeObjAddr(), outSize.width, outSize.height, img.nativeObj, marginSize, borderBits);
  937. return;
  938. #else
  939. return;
  940. #endif
  941. }
  942. //javadoc: drawPlanarBoard(board, outSize, img, marginSize)
  943. public static void drawPlanarBoard (Board board, Size outSize, Mat img, int marginSize)
  944. {
  945. if (board != null) board.ThrowIfDisposed ();
  946. if (img != null) img.ThrowIfDisposed ();
  947. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  948. aruco_Aruco_drawPlanarBoard_11(board.getNativeObjAddr(), outSize.width, outSize.height, img.nativeObj, marginSize);
  949. return;
  950. #else
  951. return;
  952. #endif
  953. }
  954. //javadoc: drawPlanarBoard(board, outSize, img)
  955. public static void drawPlanarBoard (Board board, Size outSize, Mat img)
  956. {
  957. if (board != null) board.ThrowIfDisposed ();
  958. if (img != null) img.ThrowIfDisposed ();
  959. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  960. aruco_Aruco_drawPlanarBoard_12(board.getNativeObjAddr(), outSize.width, outSize.height, img.nativeObj);
  961. return;
  962. #else
  963. return;
  964. #endif
  965. }
  966. //
  967. // C++: void cv::aruco::estimatePoseSingleMarkers(vector_Mat corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat& rvecs, Mat& tvecs, Mat& _objPoints = Mat())
  968. //
  969. //javadoc: estimatePoseSingleMarkers(corners, markerLength, cameraMatrix, distCoeffs, rvecs, tvecs, _objPoints)
  970. public static void estimatePoseSingleMarkers (List<Mat> corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat rvecs, Mat tvecs, Mat _objPoints)
  971. {
  972. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  973. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  974. if (rvecs != null) rvecs.ThrowIfDisposed ();
  975. if (tvecs != null) tvecs.ThrowIfDisposed ();
  976. if (_objPoints != null) _objPoints.ThrowIfDisposed ();
  977. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  978. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  979. aruco_Aruco_estimatePoseSingleMarkers_10(corners_mat.nativeObj, markerLength, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs.nativeObj, tvecs.nativeObj, _objPoints.nativeObj);
  980. return;
  981. #else
  982. return;
  983. #endif
  984. }
  985. //javadoc: estimatePoseSingleMarkers(corners, markerLength, cameraMatrix, distCoeffs, rvecs, tvecs)
  986. public static void estimatePoseSingleMarkers (List<Mat> corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat rvecs, Mat tvecs)
  987. {
  988. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  989. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  990. if (rvecs != null) rvecs.ThrowIfDisposed ();
  991. if (tvecs != null) tvecs.ThrowIfDisposed ();
  992. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  993. Mat corners_mat = Converters.vector_Mat_to_Mat(corners);
  994. aruco_Aruco_estimatePoseSingleMarkers_11(corners_mat.nativeObj, markerLength, cameraMatrix.nativeObj, distCoeffs.nativeObj, rvecs.nativeObj, tvecs.nativeObj);
  995. return;
  996. #else
  997. return;
  998. #endif
  999. }
  1000. //
  1001. // C++: void cv::aruco::getBoardObjectAndImagePoints(Ptr_Board board, vector_Mat detectedCorners, Mat detectedIds, Mat& objPoints, Mat& imgPoints)
  1002. //
  1003. //javadoc: getBoardObjectAndImagePoints(board, detectedCorners, detectedIds, objPoints, imgPoints)
  1004. public static void getBoardObjectAndImagePoints (Board board, List<Mat> detectedCorners, Mat detectedIds, Mat objPoints, Mat imgPoints)
  1005. {
  1006. if (board != null) board.ThrowIfDisposed ();
  1007. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1008. if (objPoints != null) objPoints.ThrowIfDisposed ();
  1009. if (imgPoints != null) imgPoints.ThrowIfDisposed ();
  1010. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1011. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1012. aruco_Aruco_getBoardObjectAndImagePoints_10(board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, objPoints.nativeObj, imgPoints.nativeObj);
  1013. return;
  1014. #else
  1015. return;
  1016. #endif
  1017. }
  1018. //
  1019. // 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 = DetectorParameters::create())
  1020. //
  1021. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners, cameraMatrix, distCoeffs, minRepDistance, errorCorrectionRate, checkAllOrders, recoveredIdxs, parameters)
  1022. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate, bool checkAllOrders, Mat recoveredIdxs, DetectorParameters parameters)
  1023. {
  1024. if (image != null) image.ThrowIfDisposed ();
  1025. if (board != null) board.ThrowIfDisposed ();
  1026. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1027. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  1028. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  1029. if (recoveredIdxs != null) recoveredIdxs.ThrowIfDisposed ();
  1030. if (parameters != null) parameters.ThrowIfDisposed ();
  1031. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1032. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1033. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1034. aruco_Aruco_refineDetectedMarkers_10(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate, checkAllOrders, recoveredIdxs.nativeObj, parameters.getNativeObjAddr());
  1035. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1036. detectedCorners_mat.release();
  1037. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1038. rejectedCorners_mat.release();
  1039. return;
  1040. #else
  1041. return;
  1042. #endif
  1043. }
  1044. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners, cameraMatrix, distCoeffs, minRepDistance, errorCorrectionRate, checkAllOrders, recoveredIdxs)
  1045. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate, bool checkAllOrders, Mat recoveredIdxs)
  1046. {
  1047. if (image != null) image.ThrowIfDisposed ();
  1048. if (board != null) board.ThrowIfDisposed ();
  1049. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1050. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  1051. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  1052. if (recoveredIdxs != null) recoveredIdxs.ThrowIfDisposed ();
  1053. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1054. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1055. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1056. aruco_Aruco_refineDetectedMarkers_11(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate, checkAllOrders, recoveredIdxs.nativeObj);
  1057. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1058. detectedCorners_mat.release();
  1059. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1060. rejectedCorners_mat.release();
  1061. return;
  1062. #else
  1063. return;
  1064. #endif
  1065. }
  1066. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners, cameraMatrix, distCoeffs, minRepDistance, errorCorrectionRate, checkAllOrders)
  1067. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate, bool checkAllOrders)
  1068. {
  1069. if (image != null) image.ThrowIfDisposed ();
  1070. if (board != null) board.ThrowIfDisposed ();
  1071. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1072. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  1073. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  1074. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1075. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1076. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1077. aruco_Aruco_refineDetectedMarkers_12(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate, checkAllOrders);
  1078. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1079. detectedCorners_mat.release();
  1080. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1081. rejectedCorners_mat.release();
  1082. return;
  1083. #else
  1084. return;
  1085. #endif
  1086. }
  1087. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners, cameraMatrix, distCoeffs, minRepDistance, errorCorrectionRate)
  1088. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance, float errorCorrectionRate)
  1089. {
  1090. if (image != null) image.ThrowIfDisposed ();
  1091. if (board != null) board.ThrowIfDisposed ();
  1092. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1093. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  1094. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  1095. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1096. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1097. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1098. aruco_Aruco_refineDetectedMarkers_13(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance, errorCorrectionRate);
  1099. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1100. detectedCorners_mat.release();
  1101. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1102. rejectedCorners_mat.release();
  1103. return;
  1104. #else
  1105. return;
  1106. #endif
  1107. }
  1108. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners, cameraMatrix, distCoeffs, minRepDistance)
  1109. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs, float minRepDistance)
  1110. {
  1111. if (image != null) image.ThrowIfDisposed ();
  1112. if (board != null) board.ThrowIfDisposed ();
  1113. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1114. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  1115. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  1116. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1117. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1118. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1119. aruco_Aruco_refineDetectedMarkers_14(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj, minRepDistance);
  1120. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1121. detectedCorners_mat.release();
  1122. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1123. rejectedCorners_mat.release();
  1124. return;
  1125. #else
  1126. return;
  1127. #endif
  1128. }
  1129. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners, cameraMatrix, distCoeffs)
  1130. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix, Mat distCoeffs)
  1131. {
  1132. if (image != null) image.ThrowIfDisposed ();
  1133. if (board != null) board.ThrowIfDisposed ();
  1134. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1135. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  1136. if (distCoeffs != null) distCoeffs.ThrowIfDisposed ();
  1137. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1138. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1139. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1140. aruco_Aruco_refineDetectedMarkers_15(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj, distCoeffs.nativeObj);
  1141. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1142. detectedCorners_mat.release();
  1143. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1144. rejectedCorners_mat.release();
  1145. return;
  1146. #else
  1147. return;
  1148. #endif
  1149. }
  1150. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners, cameraMatrix)
  1151. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners, Mat cameraMatrix)
  1152. {
  1153. if (image != null) image.ThrowIfDisposed ();
  1154. if (board != null) board.ThrowIfDisposed ();
  1155. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1156. if (cameraMatrix != null) cameraMatrix.ThrowIfDisposed ();
  1157. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1158. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1159. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1160. aruco_Aruco_refineDetectedMarkers_16(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj, cameraMatrix.nativeObj);
  1161. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1162. detectedCorners_mat.release();
  1163. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1164. rejectedCorners_mat.release();
  1165. return;
  1166. #else
  1167. return;
  1168. #endif
  1169. }
  1170. //javadoc: refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners)
  1171. public static void refineDetectedMarkers (Mat image, Board board, List<Mat> detectedCorners, Mat detectedIds, List<Mat> rejectedCorners)
  1172. {
  1173. if (image != null) image.ThrowIfDisposed ();
  1174. if (board != null) board.ThrowIfDisposed ();
  1175. if (detectedIds != null) detectedIds.ThrowIfDisposed ();
  1176. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  1177. Mat detectedCorners_mat = Converters.vector_Mat_to_Mat(detectedCorners);
  1178. Mat rejectedCorners_mat = Converters.vector_Mat_to_Mat(rejectedCorners);
  1179. aruco_Aruco_refineDetectedMarkers_17(image.nativeObj, board.getNativeObjAddr(), detectedCorners_mat.nativeObj, detectedIds.nativeObj, rejectedCorners_mat.nativeObj);
  1180. Converters.Mat_to_vector_Mat(detectedCorners_mat, detectedCorners);
  1181. detectedCorners_mat.release();
  1182. Converters.Mat_to_vector_Mat(rejectedCorners_mat, rejectedCorners);
  1183. rejectedCorners_mat.release();
  1184. return;
  1185. #else
  1186. return;
  1187. #endif
  1188. }
  1189. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  1190. const string LIBNAME = "__Internal";
  1191. #else
  1192. const string LIBNAME = "opencvforunity";
  1193. #endif
  1194. // C++: Ptr_Dictionary cv::aruco::generateCustomDictionary(int nMarkers, int markerSize, Ptr_Dictionary baseDictionary, int randomSeed = 0)
  1195. [DllImport (LIBNAME)]
  1196. private static extern IntPtr aruco_Aruco_custom_1dictionary_1from_10 (int nMarkers, int markerSize, IntPtr baseDictionary_nativeObj, int randomSeed);
  1197. [DllImport (LIBNAME)]
  1198. private static extern IntPtr aruco_Aruco_custom_1dictionary_1from_11 (int nMarkers, int markerSize, IntPtr baseDictionary_nativeObj);
  1199. // C++: Ptr_Dictionary cv::aruco::generateCustomDictionary(int nMarkers, int markerSize, int randomSeed = 0)
  1200. [DllImport (LIBNAME)]
  1201. private static extern IntPtr aruco_Aruco_custom_1dictionary_10 (int nMarkers, int markerSize, int randomSeed);
  1202. [DllImport (LIBNAME)]
  1203. private static extern IntPtr aruco_Aruco_custom_1dictionary_11 (int nMarkers, int markerSize);
  1204. // C++: Ptr_Dictionary cv::aruco::getPredefinedDictionary(int dict)
  1205. [DllImport (LIBNAME)]
  1206. private static extern IntPtr aruco_Aruco_getPredefinedDictionary_10 (int dict);
  1207. // C++: bool cv::aruco::estimatePoseCharucoBoard(Mat charucoCorners, Mat charucoIds, Ptr_CharucoBoard board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
  1208. [DllImport (LIBNAME)]
  1209. private static extern bool aruco_Aruco_estimatePoseCharucoBoard_10 (IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj, IntPtr board_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvec_nativeObj, IntPtr tvec_nativeObj, bool useExtrinsicGuess);
  1210. [DllImport (LIBNAME)]
  1211. private static extern bool aruco_Aruco_estimatePoseCharucoBoard_11 (IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj, IntPtr board_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvec_nativeObj, IntPtr tvec_nativeObj);
  1212. // 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))
  1213. [DllImport (LIBNAME)]
  1214. private static extern double aruco_Aruco_calibrateCameraArucoExtended_10 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, IntPtr stdDeviationsIntrinsics_nativeObj, IntPtr stdDeviationsExtrinsics_nativeObj, IntPtr perViewErrors_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
  1215. [DllImport (LIBNAME)]
  1216. private static extern double aruco_Aruco_calibrateCameraArucoExtended_11 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, IntPtr stdDeviationsIntrinsics_nativeObj, IntPtr stdDeviationsExtrinsics_nativeObj, IntPtr perViewErrors_nativeObj, int flags);
  1217. [DllImport (LIBNAME)]
  1218. private static extern double aruco_Aruco_calibrateCameraArucoExtended_12 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, IntPtr stdDeviationsIntrinsics_nativeObj, IntPtr stdDeviationsExtrinsics_nativeObj, IntPtr perViewErrors_nativeObj);
  1219. // 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))
  1220. [DllImport (LIBNAME)]
  1221. private static extern double aruco_Aruco_calibrateCameraAruco_10 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
  1222. [DllImport (LIBNAME)]
  1223. private static extern double aruco_Aruco_calibrateCameraAruco_11 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, int flags);
  1224. [DllImport (LIBNAME)]
  1225. private static extern double aruco_Aruco_calibrateCameraAruco_12 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj);
  1226. [DllImport (LIBNAME)]
  1227. private static extern double aruco_Aruco_calibrateCameraAruco_13 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj);
  1228. [DllImport (LIBNAME)]
  1229. private static extern double aruco_Aruco_calibrateCameraAruco_14 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr counter_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj);
  1230. // 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))
  1231. [DllImport (LIBNAME)]
  1232. private static extern double aruco_Aruco_calibrateCameraCharucoExtended_10 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, IntPtr stdDeviationsIntrinsics_nativeObj, IntPtr stdDeviationsExtrinsics_nativeObj, IntPtr perViewErrors_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
  1233. [DllImport (LIBNAME)]
  1234. private static extern double aruco_Aruco_calibrateCameraCharucoExtended_11 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, IntPtr stdDeviationsIntrinsics_nativeObj, IntPtr stdDeviationsExtrinsics_nativeObj, IntPtr perViewErrors_nativeObj, int flags);
  1235. [DllImport (LIBNAME)]
  1236. private static extern double aruco_Aruco_calibrateCameraCharucoExtended_12 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, IntPtr stdDeviationsIntrinsics_nativeObj, IntPtr stdDeviationsExtrinsics_nativeObj, IntPtr perViewErrors_nativeObj);
  1237. // 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))
  1238. [DllImport (LIBNAME)]
  1239. private static extern double aruco_Aruco_calibrateCameraCharuco_10 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, int flags, int criteria_type, int criteria_maxCount, double criteria_epsilon);
  1240. [DllImport (LIBNAME)]
  1241. private static extern double aruco_Aruco_calibrateCameraCharuco_11 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj, int flags);
  1242. [DllImport (LIBNAME)]
  1243. private static extern double aruco_Aruco_calibrateCameraCharuco_12 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj, IntPtr tvecs_mat_nativeObj);
  1244. [DllImport (LIBNAME)]
  1245. private static extern double aruco_Aruco_calibrateCameraCharuco_13 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_mat_nativeObj);
  1246. [DllImport (LIBNAME)]
  1247. private static extern double aruco_Aruco_calibrateCameraCharuco_14 (IntPtr charucoCorners_mat_nativeObj, IntPtr charucoIds_mat_nativeObj, IntPtr board_nativeObj, double imageSize_width, double imageSize_height, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj);
  1248. // C++: int cv::aruco::estimatePoseBoard(vector_Mat corners, Mat ids, Ptr_Board board, Mat cameraMatrix, Mat distCoeffs, Mat& rvec, Mat& tvec, bool useExtrinsicGuess = false)
  1249. [DllImport (LIBNAME)]
  1250. private static extern int aruco_Aruco_estimatePoseBoard_10 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr board_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvec_nativeObj, IntPtr tvec_nativeObj, bool useExtrinsicGuess);
  1251. [DllImport (LIBNAME)]
  1252. private static extern int aruco_Aruco_estimatePoseBoard_11 (IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr board_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvec_nativeObj, IntPtr tvec_nativeObj);
  1253. // 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)
  1254. [DllImport (LIBNAME)]
  1255. private static extern int aruco_Aruco_interpolateCornersCharuco_10 (IntPtr markerCorners_mat_nativeObj, IntPtr markerIds_nativeObj, IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, int minMarkers);
  1256. [DllImport (LIBNAME)]
  1257. private static extern int aruco_Aruco_interpolateCornersCharuco_11 (IntPtr markerCorners_mat_nativeObj, IntPtr markerIds_nativeObj, IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj);
  1258. [DllImport (LIBNAME)]
  1259. private static extern int aruco_Aruco_interpolateCornersCharuco_12 (IntPtr markerCorners_mat_nativeObj, IntPtr markerIds_nativeObj, IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj, IntPtr cameraMatrix_nativeObj);
  1260. [DllImport (LIBNAME)]
  1261. private static extern int aruco_Aruco_interpolateCornersCharuco_13 (IntPtr markerCorners_mat_nativeObj, IntPtr markerIds_nativeObj, IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj);
  1262. // 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())
  1263. [DllImport (LIBNAME)]
  1264. private static extern void aruco_Aruco_detectCharucoDiamond_10 (IntPtr image_nativeObj, IntPtr markerCorners_mat_nativeObj, IntPtr markerIds_nativeObj, float squareMarkerLengthRate, IntPtr diamondCorners_mat_nativeObj, IntPtr diamondIds_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj);
  1265. [DllImport (LIBNAME)]
  1266. private static extern void aruco_Aruco_detectCharucoDiamond_11 (IntPtr image_nativeObj, IntPtr markerCorners_mat_nativeObj, IntPtr markerIds_nativeObj, float squareMarkerLengthRate, IntPtr diamondCorners_mat_nativeObj, IntPtr diamondIds_nativeObj, IntPtr cameraMatrix_nativeObj);
  1267. [DllImport (LIBNAME)]
  1268. private static extern void aruco_Aruco_detectCharucoDiamond_12 (IntPtr image_nativeObj, IntPtr markerCorners_mat_nativeObj, IntPtr markerIds_nativeObj, float squareMarkerLengthRate, IntPtr diamondCorners_mat_nativeObj, IntPtr diamondIds_nativeObj);
  1269. // C++: void cv::aruco::detectMarkers(Mat image, Ptr_Dictionary dictionary, vector_Mat& corners, Mat& ids, Ptr_DetectorParameters parameters = DetectorParameters::create(), vector_Mat& rejectedImgPoints = vector_Mat(), Mat cameraMatrix = Mat(), Mat distCoeff = Mat())
  1270. [DllImport (LIBNAME)]
  1271. private static extern void aruco_Aruco_detectMarkers_10 (IntPtr image_nativeObj, IntPtr dictionary_nativeObj, IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr parameters_nativeObj, IntPtr rejectedImgPoints_mat_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeff_nativeObj);
  1272. [DllImport (LIBNAME)]
  1273. private static extern void aruco_Aruco_detectMarkers_11 (IntPtr image_nativeObj, IntPtr dictionary_nativeObj, IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr parameters_nativeObj, IntPtr rejectedImgPoints_mat_nativeObj, IntPtr cameraMatrix_nativeObj);
  1274. [DllImport (LIBNAME)]
  1275. private static extern void aruco_Aruco_detectMarkers_12 (IntPtr image_nativeObj, IntPtr dictionary_nativeObj, IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr parameters_nativeObj, IntPtr rejectedImgPoints_mat_nativeObj);
  1276. [DllImport (LIBNAME)]
  1277. private static extern void aruco_Aruco_detectMarkers_13 (IntPtr image_nativeObj, IntPtr dictionary_nativeObj, IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, IntPtr parameters_nativeObj);
  1278. [DllImport (LIBNAME)]
  1279. private static extern void aruco_Aruco_detectMarkers_14 (IntPtr image_nativeObj, IntPtr dictionary_nativeObj, IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj);
  1280. // C++: void cv::aruco::drawAxis(Mat& image, Mat cameraMatrix, Mat distCoeffs, Mat rvec, Mat tvec, float length)
  1281. [DllImport (LIBNAME)]
  1282. private static extern void aruco_Aruco_drawAxis_10 (IntPtr image_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvec_nativeObj, IntPtr tvec_nativeObj, float length);
  1283. // C++: void cv::aruco::drawDetectedCornersCharuco(Mat& image, Mat charucoCorners, Mat charucoIds = Mat(), Scalar cornerColor = Scalar(255, 0, 0))
  1284. [DllImport (LIBNAME)]
  1285. private static extern void aruco_Aruco_drawDetectedCornersCharuco_10 (IntPtr image_nativeObj, IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj, double cornerColor_val0, double cornerColor_val1, double cornerColor_val2, double cornerColor_val3);
  1286. [DllImport (LIBNAME)]
  1287. private static extern void aruco_Aruco_drawDetectedCornersCharuco_11 (IntPtr image_nativeObj, IntPtr charucoCorners_nativeObj, IntPtr charucoIds_nativeObj);
  1288. [DllImport (LIBNAME)]
  1289. private static extern void aruco_Aruco_drawDetectedCornersCharuco_12 (IntPtr image_nativeObj, IntPtr charucoCorners_nativeObj);
  1290. // C++: void cv::aruco::drawDetectedDiamonds(Mat& image, vector_Mat diamondCorners, Mat diamondIds = Mat(), Scalar borderColor = Scalar(0, 0, 255))
  1291. [DllImport (LIBNAME)]
  1292. private static extern void aruco_Aruco_drawDetectedDiamonds_10 (IntPtr image_nativeObj, IntPtr diamondCorners_mat_nativeObj, IntPtr diamondIds_nativeObj, double borderColor_val0, double borderColor_val1, double borderColor_val2, double borderColor_val3);
  1293. [DllImport (LIBNAME)]
  1294. private static extern void aruco_Aruco_drawDetectedDiamonds_11 (IntPtr image_nativeObj, IntPtr diamondCorners_mat_nativeObj, IntPtr diamondIds_nativeObj);
  1295. [DllImport (LIBNAME)]
  1296. private static extern void aruco_Aruco_drawDetectedDiamonds_12 (IntPtr image_nativeObj, IntPtr diamondCorners_mat_nativeObj);
  1297. // C++: void cv::aruco::drawDetectedMarkers(Mat& image, vector_Mat corners, Mat ids = Mat(), Scalar borderColor = Scalar(0, 255, 0))
  1298. [DllImport (LIBNAME)]
  1299. private static extern void aruco_Aruco_drawDetectedMarkers_10 (IntPtr image_nativeObj, IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj, double borderColor_val0, double borderColor_val1, double borderColor_val2, double borderColor_val3);
  1300. [DllImport (LIBNAME)]
  1301. private static extern void aruco_Aruco_drawDetectedMarkers_11 (IntPtr image_nativeObj, IntPtr corners_mat_nativeObj, IntPtr ids_nativeObj);
  1302. [DllImport (LIBNAME)]
  1303. private static extern void aruco_Aruco_drawDetectedMarkers_12 (IntPtr image_nativeObj, IntPtr corners_mat_nativeObj);
  1304. // C++: void cv::aruco::drawMarker(Ptr_Dictionary dictionary, int id, int sidePixels, Mat& img, int borderBits = 1)
  1305. [DllImport (LIBNAME)]
  1306. private static extern void aruco_Aruco_drawMarker_10 (IntPtr dictionary_nativeObj, int id, int sidePixels, IntPtr img_nativeObj, int borderBits);
  1307. [DllImport (LIBNAME)]
  1308. private static extern void aruco_Aruco_drawMarker_11 (IntPtr dictionary_nativeObj, int id, int sidePixels, IntPtr img_nativeObj);
  1309. // C++: void cv::aruco::drawPlanarBoard(Ptr_Board board, Size outSize, Mat& img, int marginSize = 0, int borderBits = 1)
  1310. [DllImport (LIBNAME)]
  1311. private static extern void aruco_Aruco_drawPlanarBoard_10 (IntPtr board_nativeObj, double outSize_width, double outSize_height, IntPtr img_nativeObj, int marginSize, int borderBits);
  1312. [DllImport (LIBNAME)]
  1313. private static extern void aruco_Aruco_drawPlanarBoard_11 (IntPtr board_nativeObj, double outSize_width, double outSize_height, IntPtr img_nativeObj, int marginSize);
  1314. [DllImport (LIBNAME)]
  1315. private static extern void aruco_Aruco_drawPlanarBoard_12 (IntPtr board_nativeObj, double outSize_width, double outSize_height, IntPtr img_nativeObj);
  1316. // C++: void cv::aruco::estimatePoseSingleMarkers(vector_Mat corners, float markerLength, Mat cameraMatrix, Mat distCoeffs, Mat& rvecs, Mat& tvecs, Mat& _objPoints = Mat())
  1317. [DllImport (LIBNAME)]
  1318. private static extern void aruco_Aruco_estimatePoseSingleMarkers_10 (IntPtr corners_mat_nativeObj, float markerLength, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_nativeObj, IntPtr tvecs_nativeObj, IntPtr _objPoints_nativeObj);
  1319. [DllImport (LIBNAME)]
  1320. private static extern void aruco_Aruco_estimatePoseSingleMarkers_11 (IntPtr corners_mat_nativeObj, float markerLength, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, IntPtr rvecs_nativeObj, IntPtr tvecs_nativeObj);
  1321. // C++: void cv::aruco::getBoardObjectAndImagePoints(Ptr_Board board, vector_Mat detectedCorners, Mat detectedIds, Mat& objPoints, Mat& imgPoints)
  1322. [DllImport (LIBNAME)]
  1323. private static extern void aruco_Aruco_getBoardObjectAndImagePoints_10 (IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr objPoints_nativeObj, IntPtr imgPoints_nativeObj);
  1324. // 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 = DetectorParameters::create())
  1325. [DllImport (LIBNAME)]
  1326. private static extern void aruco_Aruco_refineDetectedMarkers_10 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate, bool checkAllOrders, IntPtr recoveredIdxs_nativeObj, IntPtr parameters_nativeObj);
  1327. [DllImport (LIBNAME)]
  1328. private static extern void aruco_Aruco_refineDetectedMarkers_11 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate, bool checkAllOrders, IntPtr recoveredIdxs_nativeObj);
  1329. [DllImport (LIBNAME)]
  1330. private static extern void aruco_Aruco_refineDetectedMarkers_12 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate, bool checkAllOrders);
  1331. [DllImport (LIBNAME)]
  1332. private static extern void aruco_Aruco_refineDetectedMarkers_13 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, float minRepDistance, float errorCorrectionRate);
  1333. [DllImport (LIBNAME)]
  1334. private static extern void aruco_Aruco_refineDetectedMarkers_14 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj, float minRepDistance);
  1335. [DllImport (LIBNAME)]
  1336. private static extern void aruco_Aruco_refineDetectedMarkers_15 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj, IntPtr cameraMatrix_nativeObj, IntPtr distCoeffs_nativeObj);
  1337. [DllImport (LIBNAME)]
  1338. private static extern void aruco_Aruco_refineDetectedMarkers_16 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj, IntPtr cameraMatrix_nativeObj);
  1339. [DllImport (LIBNAME)]
  1340. private static extern void aruco_Aruco_refineDetectedMarkers_17 (IntPtr image_nativeObj, IntPtr board_nativeObj, IntPtr detectedCorners_mat_nativeObj, IntPtr detectedIds_nativeObj, IntPtr rejectedCorners_mat_nativeObj);
  1341. }
  1342. }