Net.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928
  1. #if !UNITY_WSA_10_0
  2. using OpenCVForUnity.CoreModule;
  3. using OpenCVForUnity.UtilsModule;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Runtime.InteropServices;
  7. namespace OpenCVForUnity.DnnModule
  8. {
  9. // C++: class Net
  10. //javadoc: Net
  11. public class Net : DisposableOpenCVObject
  12. {
  13. protected override void Dispose (bool disposing)
  14. {
  15. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  16. try {
  17. if (disposing) {
  18. }
  19. if (IsEnabledDispose) {
  20. if (nativeObj != IntPtr.Zero)
  21. dnn_Net_delete (nativeObj);
  22. nativeObj = IntPtr.Zero;
  23. }
  24. } finally {
  25. base.Dispose (disposing);
  26. }
  27. #else
  28. return;
  29. #endif
  30. }
  31. protected internal Net (IntPtr addr)
  32. : base (addr)
  33. {
  34. }
  35. public IntPtr getNativeObjAddr ()
  36. {
  37. return nativeObj;
  38. }
  39. // internal usage only
  40. public static Net __fromPtr__ (IntPtr addr)
  41. {
  42. return new Net (addr);
  43. }
  44. //
  45. // C++: cv::dnn::Net::Net()
  46. //
  47. //javadoc: Net::Net()
  48. public Net ()
  49. {
  50. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  51. nativeObj = dnn_Net_Net_10 ();
  52. return;
  53. #else
  54. return null;
  55. #endif
  56. }
  57. //
  58. // C++: Mat cv::dnn::Net::forward(String outputName = String())
  59. //
  60. //javadoc: Net::forward(outputName)
  61. public Mat forward (string outputName)
  62. {
  63. ThrowIfDisposed ();
  64. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  65. Mat retVal = new Mat (dnn_Net_forward_10 (nativeObj, outputName));
  66. return retVal;
  67. #else
  68. return null;
  69. #endif
  70. }
  71. //javadoc: Net::forward()
  72. public Mat forward ()
  73. {
  74. ThrowIfDisposed ();
  75. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  76. Mat retVal = new Mat (dnn_Net_forward_11 (nativeObj));
  77. return retVal;
  78. #else
  79. return null;
  80. #endif
  81. }
  82. //
  83. // C++: Mat cv::dnn::Net::getParam(LayerId layer, int numParam = 0)
  84. //
  85. //javadoc: Net::getParam(layer, numParam)
  86. public Mat getParam (DictValue layer, int numParam)
  87. {
  88. ThrowIfDisposed ();
  89. if (layer != null)
  90. layer.ThrowIfDisposed ();
  91. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  92. Mat retVal = new Mat (dnn_Net_getParam_10 (nativeObj, layer.getNativeObjAddr (), numParam));
  93. return retVal;
  94. #else
  95. return null;
  96. #endif
  97. }
  98. //javadoc: Net::getParam(layer)
  99. public Mat getParam (DictValue layer)
  100. {
  101. ThrowIfDisposed ();
  102. if (layer != null)
  103. layer.ThrowIfDisposed ();
  104. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  105. Mat retVal = new Mat (dnn_Net_getParam_11 (nativeObj, layer.getNativeObjAddr ()));
  106. return retVal;
  107. #else
  108. return null;
  109. #endif
  110. }
  111. //
  112. // C++: static Net cv::dnn::Net::readFromModelOptimizer(String xml, String bin)
  113. //
  114. //javadoc: Net::readFromModelOptimizer(xml, bin)
  115. public static Net readFromModelOptimizer (string xml, string bin)
  116. {
  117. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  118. Net retVal = new Net (dnn_Net_readFromModelOptimizer_10 (xml, bin));
  119. return retVal;
  120. #else
  121. return null;
  122. #endif
  123. }
  124. //
  125. // C++: Ptr_Layer cv::dnn::Net::getLayer(LayerId layerId)
  126. //
  127. //javadoc: Net::getLayer(layerId)
  128. public Layer getLayer (DictValue layerId)
  129. {
  130. ThrowIfDisposed ();
  131. if (layerId != null)
  132. layerId.ThrowIfDisposed ();
  133. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  134. Layer retVal = Layer.__fromPtr__ (dnn_Net_getLayer_10 (nativeObj, layerId.getNativeObjAddr ()));
  135. return retVal;
  136. #else
  137. return null;
  138. #endif
  139. }
  140. //
  141. // C++: bool cv::dnn::Net::empty()
  142. //
  143. //javadoc: Net::empty()
  144. public bool empty ()
  145. {
  146. ThrowIfDisposed ();
  147. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  148. bool retVal = dnn_Net_empty_10 (nativeObj);
  149. return retVal;
  150. #else
  151. return false;
  152. #endif
  153. }
  154. //
  155. // C++: int cv::dnn::Net::getLayerId(String layer)
  156. //
  157. //javadoc: Net::getLayerId(layer)
  158. public int getLayerId (string layer)
  159. {
  160. ThrowIfDisposed ();
  161. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  162. int retVal = dnn_Net_getLayerId_10 (nativeObj, layer);
  163. return retVal;
  164. #else
  165. return -1;
  166. #endif
  167. }
  168. //
  169. // C++: int cv::dnn::Net::getLayersCount(String layerType)
  170. //
  171. //javadoc: Net::getLayersCount(layerType)
  172. public int getLayersCount (string layerType)
  173. {
  174. ThrowIfDisposed ();
  175. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  176. int retVal = dnn_Net_getLayersCount_10 (nativeObj, layerType);
  177. return retVal;
  178. #else
  179. return -1;
  180. #endif
  181. }
  182. //
  183. // C++: int64 cv::dnn::Net::getFLOPS(MatShape netInputShape)
  184. //
  185. //javadoc: Net::getFLOPS(netInputShape)
  186. public long getFLOPS (MatOfInt netInputShape)
  187. {
  188. ThrowIfDisposed ();
  189. if (netInputShape != null)
  190. netInputShape.ThrowIfDisposed ();
  191. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  192. Mat netInputShape_mat = netInputShape;
  193. long retVal = dnn_Net_getFLOPS_10 (nativeObj, netInputShape_mat.nativeObj);
  194. return retVal;
  195. #else
  196. return -1;
  197. #endif
  198. }
  199. //
  200. // C++: int64 cv::dnn::Net::getFLOPS(int layerId, MatShape netInputShape)
  201. //
  202. //javadoc: Net::getFLOPS(layerId, netInputShape)
  203. public long getFLOPS (int layerId, MatOfInt netInputShape)
  204. {
  205. ThrowIfDisposed ();
  206. if (netInputShape != null)
  207. netInputShape.ThrowIfDisposed ();
  208. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  209. Mat netInputShape_mat = netInputShape;
  210. long retVal = dnn_Net_getFLOPS_11 (nativeObj, layerId, netInputShape_mat.nativeObj);
  211. return retVal;
  212. #else
  213. return -1;
  214. #endif
  215. }
  216. //
  217. // C++: int64 cv::dnn::Net::getFLOPS(int layerId, vector_MatShape netInputShapes)
  218. //
  219. //javadoc: Net::getFLOPS(layerId, netInputShapes)
  220. public long getFLOPS (int layerId, List<MatOfInt> netInputShapes)
  221. {
  222. ThrowIfDisposed ();
  223. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  224. Mat netInputShapes_mat = Converters.vector_MatShape_to_Mat (netInputShapes);
  225. long retVal = dnn_Net_getFLOPS_12 (nativeObj, layerId, netInputShapes_mat.nativeObj);
  226. return retVal;
  227. #else
  228. return -1;
  229. #endif
  230. }
  231. //
  232. // C++: int64 cv::dnn::Net::getFLOPS(vector_MatShape netInputShapes)
  233. //
  234. //javadoc: Net::getFLOPS(netInputShapes)
  235. public long getFLOPS (List<MatOfInt> netInputShapes)
  236. {
  237. ThrowIfDisposed ();
  238. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  239. Mat netInputShapes_mat = Converters.vector_MatShape_to_Mat (netInputShapes);
  240. long retVal = dnn_Net_getFLOPS_13 (nativeObj, netInputShapes_mat.nativeObj);
  241. return retVal;
  242. #else
  243. return -1;
  244. #endif
  245. }
  246. //
  247. // C++: int64 cv::dnn::Net::getPerfProfile(vector_double& timings)
  248. //
  249. //javadoc: Net::getPerfProfile(timings)
  250. public long getPerfProfile (MatOfDouble timings)
  251. {
  252. ThrowIfDisposed ();
  253. if (timings != null)
  254. timings.ThrowIfDisposed ();
  255. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  256. Mat timings_mat = timings;
  257. long retVal = dnn_Net_getPerfProfile_10 (nativeObj, timings_mat.nativeObj);
  258. return retVal;
  259. #else
  260. return -1;
  261. #endif
  262. }
  263. //
  264. // C++: vector_String cv::dnn::Net::getLayerNames()
  265. //
  266. //javadoc: Net::getLayerNames()
  267. public List<string> getLayerNames ()
  268. {
  269. ThrowIfDisposed ();
  270. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  271. List<string> retVal = new List<string> ();
  272. Mat retValMat = new Mat (dnn_Net_getLayerNames_10 (nativeObj));
  273. Converters.Mat_to_vector_String (retValMat, retVal);
  274. return retVal;
  275. #else
  276. return null;
  277. #endif
  278. }
  279. //
  280. // C++: vector_String cv::dnn::Net::getUnconnectedOutLayersNames()
  281. //
  282. //javadoc: Net::getUnconnectedOutLayersNames()
  283. public List<string> getUnconnectedOutLayersNames ()
  284. {
  285. ThrowIfDisposed ();
  286. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  287. List<string> retVal = new List<string> ();
  288. Mat retValMat = new Mat (dnn_Net_getUnconnectedOutLayersNames_10 (nativeObj));
  289. Converters.Mat_to_vector_String (retValMat, retVal);
  290. return retVal;
  291. #else
  292. return null;
  293. #endif
  294. }
  295. //
  296. // C++: vector_int cv::dnn::Net::getUnconnectedOutLayers()
  297. //
  298. //javadoc: Net::getUnconnectedOutLayers()
  299. public MatOfInt getUnconnectedOutLayers ()
  300. {
  301. ThrowIfDisposed ();
  302. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  303. MatOfInt retVal = MatOfInt.fromNativeAddr (dnn_Net_getUnconnectedOutLayers_10 (nativeObj));
  304. return retVal;
  305. #else
  306. return null;
  307. #endif
  308. }
  309. //
  310. // C++: void cv::dnn::Net::connect(String outPin, String inpPin)
  311. //
  312. //javadoc: Net::connect(outPin, inpPin)
  313. public void connect (string outPin, string inpPin)
  314. {
  315. ThrowIfDisposed ();
  316. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  317. dnn_Net_connect_10 (nativeObj, outPin, inpPin);
  318. return;
  319. #else
  320. return;
  321. #endif
  322. }
  323. //
  324. // C++: void cv::dnn::Net::enableFusion(bool fusion)
  325. //
  326. //javadoc: Net::enableFusion(fusion)
  327. public void enableFusion (bool fusion)
  328. {
  329. ThrowIfDisposed ();
  330. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  331. dnn_Net_enableFusion_10 (nativeObj, fusion);
  332. return;
  333. #else
  334. return;
  335. #endif
  336. }
  337. //
  338. // C++: void cv::dnn::Net::forward(vector_Mat& outputBlobs, String outputName = String())
  339. //
  340. //javadoc: Net::forward(outputBlobs, outputName)
  341. public void forward (List<Mat> outputBlobs, string outputName)
  342. {
  343. ThrowIfDisposed ();
  344. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  345. Mat outputBlobs_mat = new Mat ();
  346. dnn_Net_forward_12 (nativeObj, outputBlobs_mat.nativeObj, outputName);
  347. Converters.Mat_to_vector_Mat (outputBlobs_mat, outputBlobs);
  348. outputBlobs_mat.release ();
  349. return;
  350. #else
  351. return;
  352. #endif
  353. }
  354. //javadoc: Net::forward(outputBlobs)
  355. public void forward (List<Mat> outputBlobs)
  356. {
  357. ThrowIfDisposed ();
  358. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  359. Mat outputBlobs_mat = new Mat ();
  360. dnn_Net_forward_13 (nativeObj, outputBlobs_mat.nativeObj);
  361. Converters.Mat_to_vector_Mat (outputBlobs_mat, outputBlobs);
  362. outputBlobs_mat.release ();
  363. return;
  364. #else
  365. return;
  366. #endif
  367. }
  368. //
  369. // C++: void cv::dnn::Net::forward(vector_Mat& outputBlobs, vector_String outBlobNames)
  370. //
  371. //javadoc: Net::forward(outputBlobs, outBlobNames)
  372. public void forward (List<Mat> outputBlobs, List<string> outBlobNames)
  373. {
  374. ThrowIfDisposed ();
  375. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  376. Mat outputBlobs_mat = new Mat ();
  377. Mat outBlobNames_mat = Converters.vector_String_to_Mat (outBlobNames);
  378. dnn_Net_forward_14 (nativeObj, outputBlobs_mat.nativeObj, outBlobNames_mat.nativeObj);
  379. Converters.Mat_to_vector_Mat (outputBlobs_mat, outputBlobs);
  380. outputBlobs_mat.release ();
  381. return;
  382. #else
  383. return;
  384. #endif
  385. }
  386. //
  387. // C++: void cv::dnn::Net::forward(vector_vector_Mat& outputBlobs, vector_String outBlobNames)
  388. //
  389. // Unknown type 'vector_vector_Mat' (O), skipping the function
  390. //
  391. // C++: void cv::dnn::Net::getLayerTypes(vector_String& layersTypes)
  392. //
  393. //javadoc: Net::getLayerTypes(layersTypes)
  394. public void getLayerTypes (List<string> layersTypes)
  395. {
  396. ThrowIfDisposed ();
  397. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  398. Mat layersTypes_mat = new Mat ();
  399. dnn_Net_getLayerTypes_10 (nativeObj, layersTypes_mat.nativeObj);
  400. Converters.Mat_to_vector_String (layersTypes_mat, layersTypes);
  401. layersTypes_mat.release ();
  402. return;
  403. #else
  404. return;
  405. #endif
  406. }
  407. //
  408. // C++: void cv::dnn::Net::getLayersShapes(MatShape netInputShape, vector_int& layersIds, vector_vector_MatShape& inLayersShapes, vector_vector_MatShape& outLayersShapes)
  409. //
  410. // Unknown type 'vector_vector_MatShape' (O), skipping the function
  411. //
  412. // C++: void cv::dnn::Net::getLayersShapes(vector_MatShape netInputShapes, vector_int& layersIds, vector_vector_MatShape& inLayersShapes, vector_vector_MatShape& outLayersShapes)
  413. //
  414. // Unknown type 'vector_vector_MatShape' (O), skipping the function
  415. //
  416. // C++: void cv::dnn::Net::getMemoryConsumption(MatShape netInputShape, size_t& weights, size_t& blobs)
  417. //
  418. //javadoc: Net::getMemoryConsumption(netInputShape, weights, blobs)
  419. public void getMemoryConsumption (MatOfInt netInputShape, long[] weights, long[] blobs)
  420. {
  421. ThrowIfDisposed ();
  422. if (netInputShape != null)
  423. netInputShape.ThrowIfDisposed ();
  424. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  425. Mat netInputShape_mat = netInputShape;
  426. double[] weights_out = new double[1];
  427. double[] blobs_out = new double[1];
  428. dnn_Net_getMemoryConsumption_10 (nativeObj, netInputShape_mat.nativeObj, weights_out, blobs_out);
  429. if (weights != null)
  430. weights [0] = (long)weights_out [0];
  431. if (blobs != null)
  432. blobs [0] = (long)blobs_out [0];
  433. return;
  434. #else
  435. return;
  436. #endif
  437. }
  438. //
  439. // C++: void cv::dnn::Net::getMemoryConsumption(int layerId, MatShape netInputShape, size_t& weights, size_t& blobs)
  440. //
  441. //javadoc: Net::getMemoryConsumption(layerId, netInputShape, weights, blobs)
  442. public void getMemoryConsumption (int layerId, MatOfInt netInputShape, long[] weights, long[] blobs)
  443. {
  444. ThrowIfDisposed ();
  445. if (netInputShape != null)
  446. netInputShape.ThrowIfDisposed ();
  447. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  448. Mat netInputShape_mat = netInputShape;
  449. double[] weights_out = new double[1];
  450. double[] blobs_out = new double[1];
  451. dnn_Net_getMemoryConsumption_11 (nativeObj, layerId, netInputShape_mat.nativeObj, weights_out, blobs_out);
  452. if (weights != null)
  453. weights [0] = (long)weights_out [0];
  454. if (blobs != null)
  455. blobs [0] = (long)blobs_out [0];
  456. return;
  457. #else
  458. return;
  459. #endif
  460. }
  461. //
  462. // C++: void cv::dnn::Net::getMemoryConsumption(int layerId, vector_MatShape netInputShapes, size_t& weights, size_t& blobs)
  463. //
  464. //javadoc: Net::getMemoryConsumption(layerId, netInputShapes, weights, blobs)
  465. public void getMemoryConsumption (int layerId, List<MatOfInt> netInputShapes, long[] weights, long[] blobs)
  466. {
  467. ThrowIfDisposed ();
  468. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  469. Mat netInputShapes_mat = Converters.vector_MatShape_to_Mat (netInputShapes);
  470. double[] weights_out = new double[1];
  471. double[] blobs_out = new double[1];
  472. dnn_Net_getMemoryConsumption_12 (nativeObj, layerId, netInputShapes_mat.nativeObj, weights_out, blobs_out);
  473. if (weights != null)
  474. weights [0] = (long)weights_out [0];
  475. if (blobs != null)
  476. blobs [0] = (long)blobs_out [0];
  477. return;
  478. #else
  479. return;
  480. #endif
  481. }
  482. //
  483. // C++: void cv::dnn::Net::setHalideScheduler(String scheduler)
  484. //
  485. //javadoc: Net::setHalideScheduler(scheduler)
  486. public void setHalideScheduler (string scheduler)
  487. {
  488. ThrowIfDisposed ();
  489. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  490. dnn_Net_setHalideScheduler_10 (nativeObj, scheduler);
  491. return;
  492. #else
  493. return;
  494. #endif
  495. }
  496. //
  497. // C++: void cv::dnn::Net::setInput(Mat blob, String name = "", double scalefactor = 1.0, Scalar mean = Scalar())
  498. //
  499. //javadoc: Net::setInput(blob, name, scalefactor, mean)
  500. public void setInput (Mat blob, string name, double scalefactor, Scalar mean)
  501. {
  502. ThrowIfDisposed ();
  503. if (blob != null)
  504. blob.ThrowIfDisposed ();
  505. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  506. dnn_Net_setInput_10 (nativeObj, blob.nativeObj, name, scalefactor, mean.val [0], mean.val [1], mean.val [2], mean.val [3]);
  507. return;
  508. #else
  509. return;
  510. #endif
  511. }
  512. //javadoc: Net::setInput(blob, name, scalefactor)
  513. public void setInput (Mat blob, string name, double scalefactor)
  514. {
  515. ThrowIfDisposed ();
  516. if (blob != null)
  517. blob.ThrowIfDisposed ();
  518. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  519. dnn_Net_setInput_11 (nativeObj, blob.nativeObj, name, scalefactor);
  520. return;
  521. #else
  522. return;
  523. #endif
  524. }
  525. //javadoc: Net::setInput(blob, name)
  526. public void setInput (Mat blob, string name)
  527. {
  528. ThrowIfDisposed ();
  529. if (blob != null)
  530. blob.ThrowIfDisposed ();
  531. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  532. dnn_Net_setInput_12 (nativeObj, blob.nativeObj, name);
  533. return;
  534. #else
  535. return;
  536. #endif
  537. }
  538. //javadoc: Net::setInput(blob)
  539. public void setInput (Mat blob)
  540. {
  541. ThrowIfDisposed ();
  542. if (blob != null)
  543. blob.ThrowIfDisposed ();
  544. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  545. dnn_Net_setInput_13 (nativeObj, blob.nativeObj);
  546. return;
  547. #else
  548. return;
  549. #endif
  550. }
  551. //
  552. // C++: void cv::dnn::Net::setInputsNames(vector_String inputBlobNames)
  553. //
  554. //javadoc: Net::setInputsNames(inputBlobNames)
  555. public void setInputsNames (List<string> inputBlobNames)
  556. {
  557. ThrowIfDisposed ();
  558. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  559. Mat inputBlobNames_mat = Converters.vector_String_to_Mat (inputBlobNames);
  560. dnn_Net_setInputsNames_10 (nativeObj, inputBlobNames_mat.nativeObj);
  561. return;
  562. #else
  563. return;
  564. #endif
  565. }
  566. //
  567. // C++: void cv::dnn::Net::setParam(LayerId layer, int numParam, Mat blob)
  568. //
  569. //javadoc: Net::setParam(layer, numParam, blob)
  570. public void setParam (DictValue layer, int numParam, Mat blob)
  571. {
  572. ThrowIfDisposed ();
  573. if (layer != null)
  574. layer.ThrowIfDisposed ();
  575. if (blob != null)
  576. blob.ThrowIfDisposed ();
  577. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  578. dnn_Net_setParam_10 (nativeObj, layer.getNativeObjAddr (), numParam, blob.nativeObj);
  579. return;
  580. #else
  581. return;
  582. #endif
  583. }
  584. //
  585. // C++: void cv::dnn::Net::setPreferableBackend(int backendId)
  586. //
  587. //javadoc: Net::setPreferableBackend(backendId)
  588. public void setPreferableBackend (int backendId)
  589. {
  590. ThrowIfDisposed ();
  591. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  592. dnn_Net_setPreferableBackend_10 (nativeObj, backendId);
  593. return;
  594. #else
  595. return;
  596. #endif
  597. }
  598. //
  599. // C++: void cv::dnn::Net::setPreferableTarget(int targetId)
  600. //
  601. //javadoc: Net::setPreferableTarget(targetId)
  602. public void setPreferableTarget (int targetId)
  603. {
  604. ThrowIfDisposed ();
  605. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  606. dnn_Net_setPreferableTarget_10 (nativeObj, targetId);
  607. return;
  608. #else
  609. return;
  610. #endif
  611. }
  612. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  613. const string LIBNAME = "__Internal";
  614. #else
  615. const string LIBNAME = "opencvforunity";
  616. #endif
  617. // C++: cv::dnn::Net::Net()
  618. [DllImport (LIBNAME)]
  619. private static extern IntPtr dnn_Net_Net_10 ();
  620. // C++: Mat cv::dnn::Net::forward(String outputName = String())
  621. [DllImport (LIBNAME)]
  622. private static extern IntPtr dnn_Net_forward_10 (IntPtr nativeObj, string outputName);
  623. [DllImport (LIBNAME)]
  624. private static extern IntPtr dnn_Net_forward_11 (IntPtr nativeObj);
  625. // C++: Mat cv::dnn::Net::getParam(LayerId layer, int numParam = 0)
  626. [DllImport (LIBNAME)]
  627. private static extern IntPtr dnn_Net_getParam_10 (IntPtr nativeObj, IntPtr layer_nativeObj, int numParam);
  628. [DllImport (LIBNAME)]
  629. private static extern IntPtr dnn_Net_getParam_11 (IntPtr nativeObj, IntPtr layer_nativeObj);
  630. // C++: static Net cv::dnn::Net::readFromModelOptimizer(String xml, String bin)
  631. [DllImport (LIBNAME)]
  632. private static extern IntPtr dnn_Net_readFromModelOptimizer_10 (string xml, string bin);
  633. // C++: Ptr_Layer cv::dnn::Net::getLayer(LayerId layerId)
  634. [DllImport (LIBNAME)]
  635. private static extern IntPtr dnn_Net_getLayer_10 (IntPtr nativeObj, IntPtr layerId_nativeObj);
  636. // C++: bool cv::dnn::Net::empty()
  637. [DllImport (LIBNAME)]
  638. private static extern bool dnn_Net_empty_10 (IntPtr nativeObj);
  639. // C++: int cv::dnn::Net::getLayerId(String layer)
  640. [DllImport (LIBNAME)]
  641. private static extern int dnn_Net_getLayerId_10 (IntPtr nativeObj, string layer);
  642. // C++: int cv::dnn::Net::getLayersCount(String layerType)
  643. [DllImport (LIBNAME)]
  644. private static extern int dnn_Net_getLayersCount_10 (IntPtr nativeObj, string layerType);
  645. // C++: int64 cv::dnn::Net::getFLOPS(MatShape netInputShape)
  646. [DllImport (LIBNAME)]
  647. private static extern long dnn_Net_getFLOPS_10 (IntPtr nativeObj, IntPtr netInputShape_mat_nativeObj);
  648. // C++: int64 cv::dnn::Net::getFLOPS(int layerId, MatShape netInputShape)
  649. [DllImport (LIBNAME)]
  650. private static extern long dnn_Net_getFLOPS_11 (IntPtr nativeObj, int layerId, IntPtr netInputShape_mat_nativeObj);
  651. // C++: int64 cv::dnn::Net::getFLOPS(int layerId, vector_MatShape netInputShapes)
  652. [DllImport (LIBNAME)]
  653. private static extern long dnn_Net_getFLOPS_12 (IntPtr nativeObj, int layerId, IntPtr netInputShapes_mat_nativeObj);
  654. // C++: int64 cv::dnn::Net::getFLOPS(vector_MatShape netInputShapes)
  655. [DllImport (LIBNAME)]
  656. private static extern long dnn_Net_getFLOPS_13 (IntPtr nativeObj, IntPtr netInputShapes_mat_nativeObj);
  657. // C++: int64 cv::dnn::Net::getPerfProfile(vector_double& timings)
  658. [DllImport (LIBNAME)]
  659. private static extern long dnn_Net_getPerfProfile_10 (IntPtr nativeObj, IntPtr timings_mat_nativeObj);
  660. // C++: vector_String cv::dnn::Net::getLayerNames()
  661. [DllImport (LIBNAME)]
  662. private static extern IntPtr dnn_Net_getLayerNames_10 (IntPtr nativeObj);
  663. // C++: vector_String cv::dnn::Net::getUnconnectedOutLayersNames()
  664. [DllImport (LIBNAME)]
  665. private static extern IntPtr dnn_Net_getUnconnectedOutLayersNames_10 (IntPtr nativeObj);
  666. // C++: vector_int cv::dnn::Net::getUnconnectedOutLayers()
  667. [DllImport (LIBNAME)]
  668. private static extern IntPtr dnn_Net_getUnconnectedOutLayers_10 (IntPtr nativeObj);
  669. // C++: void cv::dnn::Net::connect(String outPin, String inpPin)
  670. [DllImport (LIBNAME)]
  671. private static extern void dnn_Net_connect_10 (IntPtr nativeObj, string outPin, string inpPin);
  672. // C++: void cv::dnn::Net::enableFusion(bool fusion)
  673. [DllImport (LIBNAME)]
  674. private static extern void dnn_Net_enableFusion_10 (IntPtr nativeObj, bool fusion);
  675. // C++: void cv::dnn::Net::forward(vector_Mat& outputBlobs, String outputName = String())
  676. [DllImport (LIBNAME)]
  677. private static extern void dnn_Net_forward_12 (IntPtr nativeObj, IntPtr outputBlobs_mat_nativeObj, string outputName);
  678. [DllImport (LIBNAME)]
  679. private static extern void dnn_Net_forward_13 (IntPtr nativeObj, IntPtr outputBlobs_mat_nativeObj);
  680. // C++: void cv::dnn::Net::forward(vector_Mat& outputBlobs, vector_String outBlobNames)
  681. [DllImport (LIBNAME)]
  682. private static extern void dnn_Net_forward_14 (IntPtr nativeObj, IntPtr outputBlobs_mat_nativeObj, IntPtr outBlobNames_mat_nativeObj);
  683. // C++: void cv::dnn::Net::getLayerTypes(vector_String& layersTypes)
  684. [DllImport (LIBNAME)]
  685. private static extern void dnn_Net_getLayerTypes_10 (IntPtr nativeObj, IntPtr layersTypes_mat_nativeObj);
  686. // C++: void cv::dnn::Net::getMemoryConsumption(MatShape netInputShape, size_t& weights, size_t& blobs)
  687. [DllImport (LIBNAME)]
  688. private static extern void dnn_Net_getMemoryConsumption_10 (IntPtr nativeObj, IntPtr netInputShape_mat_nativeObj, double[] weights_out, double[] blobs_out);
  689. // C++: void cv::dnn::Net::getMemoryConsumption(int layerId, MatShape netInputShape, size_t& weights, size_t& blobs)
  690. [DllImport (LIBNAME)]
  691. private static extern void dnn_Net_getMemoryConsumption_11 (IntPtr nativeObj, int layerId, IntPtr netInputShape_mat_nativeObj, double[] weights_out, double[] blobs_out);
  692. // C++: void cv::dnn::Net::getMemoryConsumption(int layerId, vector_MatShape netInputShapes, size_t& weights, size_t& blobs)
  693. [DllImport (LIBNAME)]
  694. private static extern void dnn_Net_getMemoryConsumption_12 (IntPtr nativeObj, int layerId, IntPtr netInputShapes_mat_nativeObj, double[] weights_out, double[] blobs_out);
  695. // C++: void cv::dnn::Net::setHalideScheduler(String scheduler)
  696. [DllImport (LIBNAME)]
  697. private static extern void dnn_Net_setHalideScheduler_10 (IntPtr nativeObj, string scheduler);
  698. // C++: void cv::dnn::Net::setInput(Mat blob, String name = "", double scalefactor = 1.0, Scalar mean = Scalar())
  699. [DllImport (LIBNAME)]
  700. private static extern void dnn_Net_setInput_10 (IntPtr nativeObj, IntPtr blob_nativeObj, string name, double scalefactor, double mean_val0, double mean_val1, double mean_val2, double mean_val3);
  701. [DllImport (LIBNAME)]
  702. private static extern void dnn_Net_setInput_11 (IntPtr nativeObj, IntPtr blob_nativeObj, string name, double scalefactor);
  703. [DllImport (LIBNAME)]
  704. private static extern void dnn_Net_setInput_12 (IntPtr nativeObj, IntPtr blob_nativeObj, string name);
  705. [DllImport (LIBNAME)]
  706. private static extern void dnn_Net_setInput_13 (IntPtr nativeObj, IntPtr blob_nativeObj);
  707. // C++: void cv::dnn::Net::setInputsNames(vector_String inputBlobNames)
  708. [DllImport (LIBNAME)]
  709. private static extern void dnn_Net_setInputsNames_10 (IntPtr nativeObj, IntPtr inputBlobNames_mat_nativeObj);
  710. // C++: void cv::dnn::Net::setParam(LayerId layer, int numParam, Mat blob)
  711. [DllImport (LIBNAME)]
  712. private static extern void dnn_Net_setParam_10 (IntPtr nativeObj, IntPtr layer_nativeObj, int numParam, IntPtr blob_nativeObj);
  713. // C++: void cv::dnn::Net::setPreferableBackend(int backendId)
  714. [DllImport (LIBNAME)]
  715. private static extern void dnn_Net_setPreferableBackend_10 (IntPtr nativeObj, int backendId);
  716. // C++: void cv::dnn::Net::setPreferableTarget(int targetId)
  717. [DllImport (LIBNAME)]
  718. private static extern void dnn_Net_setPreferableTarget_10 (IntPtr nativeObj, int targetId);
  719. // native support for java finalize()
  720. [DllImport (LIBNAME)]
  721. private static extern void dnn_Net_delete (IntPtr nativeObj);
  722. }
  723. }
  724. #endif