TrackerCreateTest.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package org.opencv.test.video;
  2. import java.io.File;
  3. import org.opencv.core.Core;
  4. import org.opencv.core.CvType;
  5. import org.opencv.core.CvException;
  6. import org.opencv.core.Mat;
  7. import org.opencv.core.Rect;
  8. import org.opencv.dnn.Dnn;
  9. import org.opencv.dnn.Net;
  10. import org.opencv.test.OpenCVTestCase;
  11. import org.opencv.video.Tracker;
  12. import org.opencv.video.TrackerGOTURN;
  13. import org.opencv.video.TrackerGOTURN_Params;
  14. import org.opencv.video.TrackerNano;
  15. import org.opencv.video.TrackerNano_Params;
  16. import org.opencv.video.TrackerVit;
  17. import org.opencv.video.TrackerVit_Params;
  18. import org.opencv.video.TrackerMIL;
  19. public class TrackerCreateTest extends OpenCVTestCase {
  20. private final static String ENV_OPENCV_DNN_TEST_DATA_PATH = "OPENCV_DNN_TEST_DATA_PATH";
  21. private final static String ENV_OPENCV_TEST_DATA_PATH = "OPENCV_TEST_DATA_PATH";
  22. private String testDataPath;
  23. private String modelsDataPath;
  24. @Override
  25. protected void setUp() throws Exception {
  26. super.setUp();
  27. // relys on https://developer.android.com/reference/java/lang/System
  28. isTestCaseEnabled = System.getProperties().getProperty("java.vm.name") != "Dalvik";
  29. if (!isTestCaseEnabled) {
  30. return;
  31. }
  32. testDataPath = System.getenv(ENV_OPENCV_TEST_DATA_PATH);
  33. if (testDataPath == null) {
  34. throw new Exception(ENV_OPENCV_TEST_DATA_PATH + " has to be defined!");
  35. }
  36. modelsDataPath = System.getenv(ENV_OPENCV_DNN_TEST_DATA_PATH);
  37. if (modelsDataPath == null) {
  38. modelsDataPath = testDataPath;
  39. }
  40. if (isTestCaseEnabled) {
  41. testDataPath = System.getenv(ENV_OPENCV_DNN_TEST_DATA_PATH);
  42. if (testDataPath == null)
  43. testDataPath = System.getenv(ENV_OPENCV_TEST_DATA_PATH);
  44. if (testDataPath == null)
  45. throw new Exception(ENV_OPENCV_TEST_DATA_PATH + " has to be defined!");
  46. }
  47. }
  48. public void testCreateTrackerGOTURN() {
  49. Net net;
  50. try {
  51. String protoFile = new File(testDataPath, "dnn/gsoc2016-goturn/goturn.prototxt").toString();
  52. String weightsFile = new File(modelsDataPath, "dnn/gsoc2016-goturn/goturn.caffemodel").toString();
  53. net = Dnn.readNetFromCaffe(protoFile, weightsFile);
  54. } catch (CvException e) {
  55. return;
  56. }
  57. Tracker tracker = TrackerGOTURN.create(net);
  58. assert(tracker != null);
  59. }
  60. public void testCreateTrackerNano() {
  61. Net backbone;
  62. Net neckhead;
  63. try {
  64. String backboneFile = new File(modelsDataPath, "dnn/onnx/models/nanotrack_backbone_sim_v2.onnx").toString();
  65. String neckheadFile = new File(modelsDataPath, "dnn/onnx/models/nanotrack_head_sim_v2.onnx").toString();
  66. backbone = Dnn.readNet(backboneFile);
  67. neckhead = Dnn.readNet(neckheadFile);
  68. } catch (CvException e) {
  69. return;
  70. }
  71. Tracker tracker = TrackerNano.create(backbone, neckhead);
  72. assert(tracker != null);
  73. }
  74. public void testCreateTrackerVit() {
  75. Net net;
  76. try {
  77. String backboneFile = new File(modelsDataPath, "dnn/onnx/models/vitTracker.onnx").toString();
  78. net = Dnn.readNet(backboneFile);
  79. } catch (CvException e) {
  80. return;
  81. }
  82. Tracker tracker = TrackerVit.create(net);
  83. assert(tracker != null);
  84. }
  85. public void testCreateTrackerMIL() {
  86. Tracker tracker = TrackerMIL.create();
  87. assert(tracker != null);
  88. Mat mat = new Mat(100, 100, CvType.CV_8UC1);
  89. Rect rect = new Rect(10, 10, 30, 30);
  90. tracker.init(mat, rect); // should not crash (https://github.com/opencv/opencv/issues/19915)
  91. }
  92. }