nareshmlx/opencv-pr huggingface dataset:
**File:** modules/dnn/src/int8layers/pooling_layer.cpp
**Change Type:** modified
**Context:** PR #23987: OpenVINO backend for INT8 models
**Review Line:** 130

**Code Changes:**
```diff
                 return type == MAX || type == AVE;
             return false;
         }
+        else if (backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH)
+        {
+            return true;
+        }
 
         return false;
     }
@@ -271,6 +276,49 @@ class PoolingLayerInt8Impl CV_FINAL : public PoolingLayerInt8
```

Review comment:
The checks are mixed across all layers - somewhere `HAVE_INF_ENGINE` checked but somewhere not.
**File:** modules/calib3d/src/stereosgbm.cpp
**Change Type:** modified
**Context:** PR #24301: Rewrite Universal Intrinsic code: features2d and calib3d module.
**Review Line:** 1124

**Code Changes:**
```diff
 
-#if CV_SIMD
-                                for( x = x1*Da; x < x2*Da; x += v_int16::nlanes )
-                                    v_store_aligned(C + x, vx_load_aligned(Cprev + x) - vx_load_aligned(hsumSub + x) + vx_load_aligned(hsumAdd + x));
+#if (CV_SIMD || CV_SIMD_SCALABLE)
+                                for( x = x1*Da; x < x2*Da; x += VTraits<v_int16>::vlanes() )
+                                    v_store_aligned(C + x, v_add(v_sub(vx_load_aligned(Cprev + x), vx_load_aligned(hsumSub + x)), vx_load_aligned(hsumAdd + x)));
 #else
                                 for( x = x1*Da; x < x2*Da; x++ )
                                     C[x] = (CostType)(Cprev[x] + hsumAdd[x] - hsumSub[x]);
@@ -1131,9 +1131,9 @@ struct CalcVerticalSums: public ParallelLoopBody
```

Review comment:
This is a commented code and it is not clear whether it will be used ad all, but since you've already modified it then probably the next line should be updated too (`vsub(v_add(...))`).
**File:** modules/features2d/src/sift.simd.hpp
**Change Type:** modified
**Context:** PR #24301: Rewrite Universal Intrinsic code: features2d and calib3d module.
**Review Line:** 233

**Code Changes:**
```diff
 
-        w = w * mag;
+        w = v_mul(w, mag);
         v_store_aligned(bin_buf, bin);
         v_store_aligned(w_mul_mag_buf, w);
         for(int vi = 0; vi < vecsize; vi++)
@@ -253,19 +253,19 @@ float calcOrientationHist(
     temphist[n+1] = temphist[1];
 
     i = 0;
-#if CV_SIMD
```

Review comment:
Here is an error, iteration should be from 0 to `VTraits<v_float32>::vlanes()` otherwise we get uninitialized values from `bin_buf` and use them as index in `temphist`. Same problem with loop on line 220, it should iterate using `vlanes()`. Perhaps it would be better to remove variable `vecsize` and use correct functions directly.
**File:** modules/features2d/src/sift.simd.hpp
**Change Type:** modified
**Context:** PR #24301: Rewrite Universal Intrinsic code: features2d and calib3d module.

**Code Changes:**
```diff
@@ -210,24 +210,24 @@ float calcOrientationHist(
     cv::hal::magnitude32f(X, Y, Mag, len);
 
     k = 0;
-#if CV_SIMD
-    const int vecsize = v_float32::nlanes;
+#if (CV_SIMD || CV_SIMD_SCALABLE)
+    const int vecsize = VTraits<v_float32>::vlanes();
     v_float32 nd360 = vx_setall_f32(n/360.f);
     v_int32 __n = vx_setall_s32(n);
```

Review comment:
This block has similar problem with `vecsize`, but slightly more complex: * `max_nlanes` should be used for buffer lengths and calculating shift for access to `rco_buf` (not sure, maybe `vlanes` is fine too) * `vlanes` should be used in other places
**File:** modules/features2d/src/sift.simd.hpp
**Change Type:** modified
**Context:** PR #24301: Rewrite Universal Intrinsic code: features2d and calib3d module.
**Review Line:** 233

**Code Changes:**
```diff
 
-        w = w * mag;
+        w = v_mul(w, mag);
         v_store_aligned(bin_buf, bin);
         v_store_aligned(w_mul_mag_buf, w);
         for(int vi = 0; vi < vecsize; vi++)
@@ -253,19 +253,19 @@ float calcOrientationHist(
     temphist[n+1] = temphist[1];
 
     i = 0;
-#if CV_SIMD
```

Review comment:
As in my updated version, maybe we can use `max_nlanes` for buffer initialization, use `vlanes` for vecsize and keep the usage of iteration (vecsize) unchanged. Do you think it's ok?
**File:** modules/core/src/parallel_impl.cpp
**Change Type:** modified
**Context:** PR #24280: optimization for parallelization when large core number

**Code Changes:**
```diff
@@ -580,8 +580,11 @@ void ThreadPool::run(const Range& range, const ParallelLoopBody& body, double ns
             pthread_mutex_unlock(&mutex);
 
             CV_LOG_VERBOSE(NULL, 5, "MainThread: wake worker threads...");
-            for (size_t i = 0; i < threads.size(); ++i)
+            size_t num_threads_to_wake = std::min(static_cast<size_t>(range.size()), threads.size());
+            for (size_t i = 0; i < num_threads_to_wake; ++i)
             {
+                if (job->current_task >= job->range.size())
+                    break;
```

Review comment:
> `max_loop` `num_threads_to_wake`
**File:** modules/core/src/parallel_impl.cpp
**Change Type:** modified
**Context:** PR #24280: optimization for parallelization when large core number

**Code Changes:**
```diff
@@ -580,8 +580,11 @@ void ThreadPool::run(const Range& range, const ParallelLoopBody& body, double ns
             pthread_mutex_unlock(&mutex);
 
             CV_LOG_VERBOSE(NULL, 5, "MainThread: wake worker threads...");
-            for (size_t i = 0; i < threads.size(); ++i)
+            size_t num_threads_to_wake = std::min(static_cast<size_t>(range.size()), threads.size());
+            for (size_t i = 0; i < num_threads_to_wake; ++i)
             {
+                if (job->current_task >= job->range.size())
+                    break;
```

Review comment:
The parameter name has revised.
**File:** modules/dnn/test/test_onnx_importer.cpp
**Change Type:** modified
**Context:** PR #24295: dnn: expand refactor with cv::broadcast for onnx models

**Code Changes:**
```diff
@@ -987,9 +987,21 @@ TEST_P(Test_ONNX_layers, MatMulAdd)
 TEST_P(Test_ONNX_layers, Expand)
 {
     testONNXModels("expand");
+}
+
+TEST_P(Test_ONNX_layers, ExpandIdentity) {
     testONNXModels("expand_identity");
+}
+
```

Review comment:
> Conformance What does it mean here? We should not duplicate tests with `test_onnx_conformance.cpp`
**File:** modules/dnn/test/test_onnx_importer.cpp
**Change Type:** modified
**Context:** PR #24295: dnn: expand refactor with cv::broadcast for onnx models

**Code Changes:**
```diff
@@ -987,9 +987,21 @@ TEST_P(Test_ONNX_layers, MatMulAdd)
 TEST_P(Test_ONNX_layers, Expand)
 {
     testONNXModels("expand");
+}
+
+TEST_P(Test_ONNX_layers, ExpandIdentity) {
     testONNXModels("expand_identity");
+}
+
```

Review comment:
They are not duplicates. The very original form of them (which may have been added into test_onnx_conformance.cpp) cannot be supported by the current dnn engine, because they have dynamic input shape. I think this could be some kind of a waste that we cannot test them just because we cannot handle dynamic input shape. So I modified the model, set the dynamic input shape as constant with corresponding tensors. Also see comment above https://github.com/opencv/opencv/pull/24295#issuecomment-1728965356. The script for model modification is in the pr comment in opencv extra. We can remove it on 5.x since we have 0d/1d now. We can turn to improve test_onnx_conformance.cpp on 5.x.
**File:** modules/dnn/test/test_onnx_importer.cpp
**Change Type:** modified
**Context:** PR #24295: dnn: expand refactor with cv::broadcast for onnx models

**Code Changes:**
```diff
@@ -987,9 +987,21 @@ TEST_P(Test_ONNX_layers, MatMulAdd)
 TEST_P(Test_ONNX_layers, Expand)
 {
     testONNXModels("expand");
+}
+
+TEST_P(Test_ONNX_layers, ExpandIdentity) {
     testONNXModels("expand_identity");
+}
+
```

Review comment:
"Conformance_" is removed from test names.
**File:** cmake/OpenCVCompilerOptions.cmake
**Change Type:** modified
**Context:** PR #24286: add Intel® oneAPI DPC++/C++ Compiler (icx)

**Code Changes:**
```diff
@@ -105,14 +105,27 @@ elseif(CV_ICC)
       add_extra_compiler_option("-fp-model precise")
     endif()
   endif()
+elseif(CV_ICX)
+  # ICX uses -ffast-math by default.
+  # use own flags, if no one of the flags provided by user: -fp-model, -ffast-math -fno-fast-math
+  if(NOT " ${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}" MATCHES " /fp:"
+      AND NOT " ${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}" MATCHES " -fp-model"
+      AND NOT " ${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}" MATCHES " -ffast-math"
```

Review comment:
It makes sense to guard this similar to line 101 (like CV_ICC) and/or 93 (MSVS)
**File:** modules/dnn/src/layers/gemm_layer.cpp
**Change Type:** modified
**Context:** PR #24309: Update OpenVINO init of new GEMM layer
**Review Line:** 321

**Code Changes:**
```diff
         }
 
         if (have_bias && const_C) {
-            auto bias_node = std::make_shared<ngraph::op::Constant>(ngraph::element::f32,
-                                              ngraph::Shape{(size_t)blobs.back().size[1]}, blobs.back().data);
+            Mat bias = blobs.back();
+            auto shape = bias.total() == bias.size[0] ? ngraph::Shape{bias.total()} : getShape(bias);
+            std::shared_ptr<ngraph::Node> bias_node = std::make_shared<ngraph::op::Constant>(ngraph::element::f32, shape, bias.data);
+            if (beta != 1.0f) {
+                bias_node = std::make_shared<ngraph::op::v1::Multiply>(bias_node,
+                    std::make_shared<ngraph::op::Constant>(ngraph::element::f32, ngraph::Shape{1}, &beta)
```

Review comment:
For the GoogleNet test, I suspect a manual broadcast is needed for bias. I saw somewhere before that it seems openvino nodes cannot perform auto-broadcast.
**File:** modules/dnn/src/layers/gemm_layer.cpp
**Change Type:** modified
**Context:** PR #24309: Update OpenVINO init of new GEMM layer
**Review Line:** 321

**Code Changes:**
```diff
         }
 
         if (have_bias && const_C) {
-            auto bias_node = std::make_shared<ngraph::op::Constant>(ngraph::element::f32,
-                                              ngraph::Shape{(size_t)blobs.back().size[1]}, blobs.back().data);
+            Mat bias = blobs.back();
+            auto shape = bias.total() == bias.size[0] ? ngraph::Shape{bias.total()} : getShape(bias);
+            std::shared_ptr<ngraph::Node> bias_node = std::make_shared<ngraph::op::Constant>(ngraph::element::f32, shape, bias.data);
+            if (beta != 1.0f) {
+                bias_node = std::make_shared<ngraph::op::v1::Multiply>(bias_node,
+                    std::make_shared<ngraph::op::Constant>(ngraph::element::f32, ngraph::Shape{1}, &beta)
```

Review comment:
Problem was in OpenVINO iterpretation of the batch dimension. Adding reshape from `[2, 1, 1024]` back to `[2, 1024]` solved it.
**File:** modules/calib3d/src/checkchessboard.cpp
**Change Type:** modified
**Context:** PR #24278: More fixes for iterators-are-pointers case
**Review Line:** 62

**Code Changes:**
```diff
     {
-        const iter_t::difference_type idx = i - contours.begin();
-        if (hierarchy.at(idx)[3] != -1)
+        if (hierarchy.at(i)[3] != -1)
             continue; // skip holes
 
-        const std::vector< cv::Point > & c = *i;
+        const std::vector< cv::Point > & c = contours[i];
         cv::RotatedRect box = cv::minAreaRect(c);
 
         float box_size = MAX(box.size.width, box.size.height);
```

Review comment:
Raw pointers have no ::difference_type member typedef (due to not having members at all). One could use std::iterator_traits to get one, by I have simplified to code instead.
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
Should we cover `SetUp()` overload too?
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
Do we still need this with `FAIL()`?
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
I wanted to keep it to verify that test body won't start in case of skip exception in the constructor.
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
Added overload for `SetUp` and some workaround for a static method `SetUpTestCase`
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
Do we still need to disable this warning?
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
Only on windows there is a warning: https://pullrequest.opencv.org/buildbot/builders/precommit_windows64/builds/102522. And it points to line in the constructor, not test body: https://github.com/opencv/opencv/pull/24186/commits/6d934f0b8c3d1e43bfad1a0d94bfdec3bb92e751#diff-4a53133499f4421656d6e02cc691c986d7ac26c94235f7480d81c156aebdab07R924
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
It is dangerous to disable this warning for whole file. Please try to disable it locally through warning push/pop.
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
`CV_NORETURN` solved this issue
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
There is warning on MSVS 2019: https://pullrequest.opencv.org/buildbot/builders/precommit_opencl/builds/100186
**File:** modules/core/test/test_misc.cpp
**Change Type:** modified
**Context:** PR #24186: Skip test on SkipTestException at fixture's constructor

**Code Changes:**
```diff
@@ -917,5 +917,41 @@ REGISTER_TYPED_TEST_CASE_P(Rect_Test, Overflows);
 typedef ::testing::Types<int, float, double> RectTypes;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Rect_Test, RectTypes);
 
+// Expected that SkipTestException thrown in the constructor should skip test but not fail
+struct TestFixtureSkip: public ::testing::Test {
+    TestFixtureSkip(bool throwEx = true) {
+        if (throwEx) {
+            throw SkipTestException("Skip test at constructor");
+        }
```

Review comment:
Added `if` condition to avoid warnings.
**File:** modules/video/include/opencv2/video/tracking.hpp
**Change Type:** modified
**Context:** PR #24201: vittrack(gsoc realtime object tracking model)

**Code Changes:**
```diff
@@ -887,6 +887,43 @@ class CV_EXPORTS_W TrackerNano : public Tracker
     //bool update(InputArray image, CV_OUT Rect& boundingBox) CV_OVERRIDE;
 };
 
+/** @brief the VIT tracker is a super lightweight dnn-based general object tracking.
+ *
+ *  VIT tracker is much faster and extremely lightweight due to special model structure, the model file is about 767KB.
+ *  Model download link: https://github.com/opencv/opencv_zoo/tree/main/models/object_tracking_vittrack
+ *  Author: PengyuLiu, 1872918507@qq.com
+ */
```

Review comment:
vt tracker -> Vit tracker
**File:** modules/video/src/tracking/tracker_vit.cpp
**Change Type:** added
**Context:** PR #24201: vittrack(gsoc realtime object tracking model)

**Code Changes:**
```diff
@@ -0,0 +1,219 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+// Author, PengyuLiu, 1872918507@qq.com
+
+#include "../precomp.hpp"
+#ifdef HAVE_OPENCV_DNN
+#include "opencv2/dnn.hpp"
```

Review comment:
vt tracker -> Vit tracker
**File:** modules/video/test/test_trackers.cpp
**Change Type:** modified
**Context:** PR #24201: vittrack(gsoc realtime object tracking model)

**Code Changes:**
```diff
@@ -160,4 +160,13 @@ TEST(NanoTrack, accuracy_NanoTrack_V2)
     checkTrackingAccuracy(tracker, 0.69);
 }
 
+TEST(vittrack, accuracy_vittrack)
+{
+    std::string model = cvtest::findDataFile("dnn/onnx/models/vitTracker.onnx", false);
+    cv::TrackerVit::Params params;
+    params.net = model;
+    cv::Ptr<Tracker> tracker = TrackerVit::create(params);
```

Review comment:
vt tracker -> vittrack
**File:** modules/video/include/opencv2/video/tracking.hpp
**Change Type:** modified
**Context:** PR #24201: vittrack(gsoc realtime object tracking model)

**Code Changes:**
```diff
@@ -887,6 +887,43 @@ class CV_EXPORTS_W TrackerNano : public Tracker
     //bool update(InputArray image, CV_OUT Rect& boundingBox) CV_OVERRIDE;
 };
 
+/** @brief the VIT tracker is a super lightweight dnn-based general object tracking.
+ *
+ *  VIT tracker is much faster and extremely lightweight due to special model structure, the model file is about 767KB.
+ *  Model download link: https://github.com/opencv/opencv_zoo/tree/main/models/object_tracking_vittrack
+ *  Author: PengyuLiu, 1872918507@qq.com
+ */
```

Review comment:
Please revise the comment.
**File:** modules/video/include/opencv2/video/tracking.hpp
**Change Type:** modified
**Context:** PR #24201: vittrack(gsoc realtime object tracking model)

**Code Changes:**
```diff
@@ -887,6 +887,43 @@ class CV_EXPORTS_W TrackerNano : public Tracker
     //bool update(InputArray image, CV_OUT Rect& boundingBox) CV_OVERRIDE;
 };
 
+/** @brief the VIT tracker is a super lightweight dnn-based general object tracking.
+ *
+ *  VIT tracker is much faster and extremely lightweight due to special model structure, the model file is about 767KB.
+ *  Model download link: https://github.com/opencv/opencv_zoo/tree/main/models/object_tracking_vittrack
+ *  Author: PengyuLiu, 1872918507@qq.com
+ */
```

Review comment:
The link should be replaced with the model zoo one.
**File:** modules/video/include/opencv2/video/tracking.hpp
**Change Type:** modified
**Context:** PR #24201: vittrack(gsoc realtime object tracking model)

**Code Changes:**
```diff
@@ -887,6 +887,43 @@ class CV_EXPORTS_W TrackerNano : public Tracker
     //bool update(InputArray image, CV_OUT Rect& boundingBox) CV_OVERRIDE;
 };
 
+/** @brief the VIT tracker is a super lightweight dnn-based general object tracking.
+ *
+ *  VIT tracker is much faster and extremely lightweight due to special model structure, the model file is about 767KB.
+ *  Model download link: https://github.com/opencv/opencv_zoo/tree/main/models/object_tracking_vittrack
+ *  Author: PengyuLiu, 1872918507@qq.com
+ */
```

Review comment:
vit is abbreviation, right? Should it be uppercase?
**File:** modules/video/src/tracking/tracker_vit.cpp
**Change Type:** added
**Context:** PR #24201: vittrack(gsoc realtime object tracking model)

**Code Changes:**
```diff
@@ -0,0 +1,219 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+// Author, PengyuLiu, 1872918507@qq.com
+
+#include "../precomp.hpp"
+#ifdef HAVE_OPENCV_DNN
+#include "opencv2/dnn.hpp"
```

Review comment:
M.b. make it the class parameters?