diff --git a/modules/video/test/test_trackers.cpp b/modules/video/test/test_trackers.cpp index 1814764987..9ae600968c 100644 --- a/modules/video/test/test_trackers.cpp +++ b/modules/video/test/test_trackers.cpp @@ -21,25 +21,27 @@ const string FOLDER_OMIT_INIT = "initOmit"; #include "test_trackers.impl.hpp" //[TESTDATA] -PARAM_TEST_CASE(DistanceAndOverlap, string) +PARAM_TEST_CASE(DistanceAndOverlap, string, int) { string dataset; + int numFramesLimit; virtual void SetUp() { dataset = GET_PARAM(0); + numFramesLimit = GET_PARAM(1); } }; TEST_P(DistanceAndOverlap, MIL) { TrackerTest test(TrackerMIL::create(), dataset, 30, .65f, NoTransform); - test.run(); + test.run(numFramesLimit); } TEST_P(DistanceAndOverlap, Shifted_Data_MIL) { TrackerTest test(TrackerMIL::create(), dataset, 30, .6f, CenterShiftLeft); - test.run(); + test.run(numFramesLimit); } /***************************************************************************************/ @@ -48,7 +50,7 @@ TEST_P(DistanceAndOverlap, Shifted_Data_MIL) TEST_P(DistanceAndOverlap, Scaled_Data_MIL) { TrackerTest test(TrackerMIL::create(), dataset, 30, .7f, Scale_1_1); - test.run(); + test.run(numFramesLimit); } TEST_P(DistanceAndOverlap, GOTURN) @@ -59,10 +61,23 @@ TEST_P(DistanceAndOverlap, GOTURN) params.modelTxt = model; params.modelBin = weights; TrackerTest test(TrackerGOTURN::create(params), dataset, 35, .35f, NoTransform); - test.run(); + test.run(numFramesLimit); } -INSTANTIATE_TEST_CASE_P(Tracking, DistanceAndOverlap, TESTSET_NAMES); +INSTANTIATE_TEST_CASE_P(Tracking, DistanceAndOverlap, + testing::Combine( + TESTSET_NAMES, + testing::Values(0) + ) +); + +INSTANTIATE_TEST_CASE_P(Tracking5Frames, DistanceAndOverlap, + testing::Combine( + TESTSET_NAMES, + testing::Values(5) + ) +); + static bool checkIOU(const Rect& r0, const Rect& r1, double threshold) { diff --git a/modules/video/test/test_trackers.impl.hpp b/modules/video/test/test_trackers.impl.hpp index fc2315ced0..0d98772e3f 100644 --- a/modules/video/test/test_trackers.impl.hpp +++ b/modules/video/test/test_trackers.impl.hpp @@ -65,7 +65,7 @@ public: TrackerTest(const Ptr& tracker, const string& video, float distanceThreshold, float overlapThreshold, int shift = NoTransform, int segmentIdx = 1, int numSegments = 10); ~TrackerTest() {} - void run(); + void run(int numFramesLimit = 0); protected: void checkDataTest(); @@ -351,7 +351,7 @@ void TrackerTest::checkDataTest() } template -void TrackerTest::run() +void TrackerTest::run(int numFramesLimit) { srand(1); // FIXIT remove that, ensure that there is no "rand()" in implementation @@ -363,5 +363,20 @@ void TrackerTest::run() if (::testing::Test::HasFatalFailure()) return; + int numFrames = endFrame - startFrame; + std::cout << "Number of frames in test data: " << numFrames << std::endl; + + if (numFramesLimit > 0) + { + numFrames = std::min(numFrames, numFramesLimit); + endFrame = startFrame + numFramesLimit; + } + else + { + applyTestTag(CV_TEST_TAG_DEBUG_VERYLONG); + } + + std::cout << "Number of frames to test: " << numFrames << std::endl; + distanceAndOverlapTest(); }