nareshmlx/opencv-pr huggingface dataset:
**File:** modules/objdetect/src/aruco/aruco_utils.hpp
**Change Type:** added
**Context:** PR #22368: move aruco from contrib to objdetect in main repository

**Code Changes:**
```diff
@@ -0,0 +1,43 @@
+// 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
+#ifndef __OPENCV_OBJDETECT_ARUCO_UTILS_HPP__
+#define __OPENCV_OBJDETECT_ARUCO_UTILS_HPP__
+
+#include <opencv2/core.hpp>
+#include <vector>
+
```

Review comment:
removed `Ptr` from `readWriteParameter`
**File:** modules/objdetect/include/opencv2/objdetect/aruco_dictionary.hpp
**Change Type:** added
**Context:** PR #22368: move aruco from contrib to objdetect in main repository

**Code Changes:**
```diff
@@ -0,0 +1,151 @@
+// 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
+#ifndef OPENCV_OBJDETECT_DICTIONARY_HPP
+#define OPENCV_OBJDETECT_DICTIONARY_HPP
+
+#include <opencv2/core.hpp>
+
+namespace cv {
```

Review comment:
It should be `PredefinedDictionary` by coding style. `PredefinedDictionaryType` by descriptive naming.
**File:** modules/objdetect/src/aruco/aruco_dictionary.cpp
**Change Type:** added
**Context:** PR #22368: move aruco from contrib to objdetect in main repository
**Review Line:** 10

**Code Changes:**
```diff
+#include "../precomp.hpp"
+#include "opencv2/core/hal/hal.hpp"
+
+#include "aruco_utils.hpp"
+#include "predefined_dictionaries.hpp"
+#include "apriltag/predefined_dictionaries_apriltag.hpp"
+#include <opencv2/objdetect/aruco_dictionary.hpp>
+
+namespace cv {
+namespace aruco {
+
```

Review comment:
size libopencv_objdetect.so is 754.7 kB in 4.x size libopencv_objdetect.so is 1101.2 kB after move aruco
**File:** modules/objdetect/include/opencv2/objdetect/aruco_dictionary.hpp
**Change Type:** added
**Context:** PR #22368: move aruco from contrib to objdetect in main repository

**Code Changes:**
```diff
@@ -0,0 +1,151 @@
+// 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
+#ifndef OPENCV_OBJDETECT_DICTIONARY_HPP
+#define OPENCV_OBJDETECT_DICTIONARY_HPP
+
+#include <opencv2/core.hpp>
+
+namespace cv {
```

Review comment:
rename `PREDEFINED_DICTIONARY` to `PredefinedDictionaryType`
**File:** modules/objdetect/src/aruco/apriltag/zmaxheap.cpp
**Change Type:** added
**Context:** PR #22368: move aruco from contrib to objdetect in main repository

**Code Changes:**
```diff
@@ -0,0 +1,207 @@
+// 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.
+//
+// Copyright (C) 2013-2016, The Regents of The University of Michigan.
+//
+// This software was developed in the APRIL Robotics Lab under the
+// direction of Edwin Olson, ebolson@umich.edu. This software may be
+// available under alternative licensing terms; contact the address above.
```

Review comment:
precomp.hpp was added to all objdetect/aruco cpp files and removed from all objdetect/aruco hpp files
**File:** modules/objdetect/src/aruco/aruco_utils.cpp
**Change Type:** added
**Context:** PR #22368: move aruco from contrib to objdetect in main repository
**Review Line:** 46

**Code Changes:**
```diff
+void _convertToGrey(InputArray _in, OutputArray _out) {
+    CV_Assert(_in.type() == CV_8UC1 || _in.type() == CV_8UC3);
+    if(_in.type() == CV_8UC3)
+        cvtColor(_in, _out, COLOR_BGR2GRAY);
+    else
+        _in.copyTo(_out);
+}
+
+}
+}
```

Review comment:
Why is a copy still performed if the image is already grey? A Copy operation seems to be expensive performance wise
**File:** modules/objdetect/include/opencv2/objdetect/aruco_dictionary.hpp
**Change Type:** added
**Context:** PR #22368: move aruco from contrib to objdetect in main repository
**Review Line:** 84

**Code Changes:**
```diff
+    CV_WRAP static Mat getByteListFromBits(const Mat &bits);
+
+
+    /** @brief Transform list of bytes to matrix of bits
+      */
+    CV_WRAP static Mat getBitsFromByteList(const Mat &byteList, int markerSize);
+};
+
+
+
+
```

Review comment:
Must be `InputArray` as it is public API.
**File:** modules/calib3d/src/ap3p.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p

**Code Changes:**
```diff
@@ -1,5 +1,6 @@
 #include "precomp.hpp"
 #include "ap3p.h"
+#include "polynom_solver.h"
 
 #include <cmath>
 #include <complex>
@@ -8,63 +9,10 @@ static inline double cbrt(double x) { return (double)cv::cubeRoot((float)x); };
 #endif
 
```

Review comment:
Hi! Can you provide a reproducer so this can be covered by some test?
**File:** modules/calib3d/src/ap3p.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p

**Code Changes:**
```diff
@@ -1,5 +1,6 @@
 #include "precomp.hpp"
 #include "ap3p.h"
+#include "polynom_solver.h"
 
 #include <cmath>
 #include <complex>
@@ -8,63 +9,10 @@ static inline double cbrt(double x) { return (double)cv::cubeRoot((float)x); };
 #endif
 
```

Review comment:
Hi! Sorry for the delay. Here is the reproducer: ``` { const float fx = 1, fy = 1, cx = 0, cy = 0; cv::ap3p solver(fx, fy, cx, cy); const std::array<cv::Point2d, 3> cameraPts = { // cv::Point2d{0.042784865945577621, 0.59844839572906494}, // cv::Point2d{-0.028428621590137482, 0.60354739427566528}, // cv::Point2d{0.0046037044376134872, 0.70674681663513184} // }; const std::array<cv::Point3d, 3> modelPts = { // cv::Point3d{-0.043258000165224075, 0.020459245890378952, -0.0069921980611979961}, // cv::Point3d{-0.045648999512195587, 0.0029820732306689024, 0.0079000638797879219}, // cv::Point3d{-0.043276999145746231, -0.013622495345771313, 0.0080113131552934647} // }; double R[4][3][3]; double t[4][3]; const int nb_solutions = solver.solve(R, t, // cameraPts[0].x, cameraPts[0].y, modelPts[0].x, modelPts[0].y, modelPts[0].z, // cameraPts[1].x, cameraPts[1].y, modelPts[1].x, modelPts[1].y, modelPts[1].z, // cameraPts[2].x, cameraPts[2].y, modelPts[2].x, modelPts[2].y, modelPts[2].z, // 0, 0, 0, 0, 0, false); } ```
**File:** modules/calib3d/src/ap3p.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p

**Code Changes:**
```diff
@@ -1,5 +1,6 @@
 #include "precomp.hpp"
 #include "ap3p.h"
+#include "polynom_solver.h"
 
 #include <cmath>
 #include <complex>
@@ -8,63 +9,10 @@ static inline double cbrt(double x) { return (double)cv::cubeRoot((float)x); };
 #endif
 
```

Review comment:
My setup: * Compiler: MSVC 14.29.30133 * CPU: i9-10850K Did you run directly cv::ap3p::solve() or you just used cv::solveP3P() when you tested the reproducer?
**File:** modules/calib3d/src/ap3p.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p

**Code Changes:**
```diff
@@ -1,5 +1,6 @@
 #include "precomp.hpp"
 #include "ap3p.h"
+#include "polynom_solver.h"
 
 #include <cmath>
 #include <complex>
@@ -8,63 +9,10 @@ static inline double cbrt(double x) { return (double)cv::cubeRoot((float)x); };
 #endif
 
```

Review comment:
Both, for me problem is not reproduced so it might depend on a compiler
**File:** modules/calib3d/src/ap3p.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p

**Code Changes:**
```diff
@@ -1,5 +1,6 @@
 #include "precomp.hpp"
 #include "ap3p.h"
+#include "polynom_solver.h"
 
 #include <cmath>
 #include <complex>
@@ -8,63 +9,10 @@ static inline double cbrt(double x) { return (double)cv::cubeRoot((float)x); };
 #endif
 
```

Review comment:
Can reproduce with the following code on `MSVC 14.35.32215`. The app not crashed but nan returned. Let me check if there is no other solution to this problem. ```patch --- a/modules/calib3d/src/ap3p.cpp +++ b/modules/calib3d/src/ap3p.cpp @@ -3,6 +3,7 @@ #include <cmath> #include <complex> +#include <iostream> #if defined (_MSC_VER) && (_MSC_VER <= 1700) static inline double cbrt(double x) { return (double)cv::cubeRoot((float)x); }; #endif @@ -256,6 +257,7 @@ int ap3p::computePoses(const double featureVectors[3][4], int nb_solutions = 0; for (int i = 0; i < 4; ++i) { double ctheta1p = s[i]; + std::cout << i << " " << ctheta1p << std::endl; if (abs(ctheta1p) > 1) continue; double stheta1p = sqrt(1 - ctheta1p * ctheta1p); ``` ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char** argv) { const std::array<cv::Point2d, 3> cameraPts = { // cv::Point2d{0.042784865945577621, 0.59844839572906494}, // cv::Point2d{-0.028428621590137482, 0.60354739427566528}, // cv::Point2d{0.0046037044376134872, 0.70674681663513184} // }; const std::array<cv::Point3d, 3> modelPts = { // cv::Point3d{-0.043258000165224075, 0.020459245890378952, -0.0069921980611979961}, // cv::Point3d{-0.045648999512195587, 0.0029820732306689024, 0.0079000638797879219}, // cv::Point3d{-0.043276999145746231, -0.013622495345771313, 0.0080113131552934647} // }; std::vector<Mat> R, t; solveP3P(modelPts, cameraPts, Mat::eye(3, 3, CV_64F), Mat(), R, t, SOLVEPNP_AP3P); for (int i = 0; i < R.size(); ++i) { std::cout << R[i] << std::endl; std::cout << t[i] << std::endl; std::cout << " " << std::endl; } return 0; } ``` ``` 0 nan 1 nan 2 -nan(ind) 3 -nan(ind) ```
**File:** modules/calib3d/src/ap3p.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p

**Code Changes:**
```diff
@@ -1,5 +1,6 @@
 #include "precomp.hpp"
 #include "ap3p.h"
+#include "polynom_solver.h"
 
 #include <cmath>
 #include <complex>
@@ -8,63 +9,10 @@ static inline double cbrt(double x) { return (double)cv::cubeRoot((float)x); };
 #endif
 
```

Review comment:
The issue is reproducible with ENABLE_FAST_MATH option in Cmake. I do not get crash, but R and t contains NaNs.
**File:** modules/calib3d/test/test_solvepnp_ransac.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p
**Review Line:** 2282

**Code Changes:**
```diff
+        has = true;
+        CV_LOG_ERROR(NULL, "check hasNan called with unsupported type!");
+    }
+
+    return has;
+}
+
+TEST(AP3P, ctheta1p_nan_23607)
+{
+    // the task is not well defined and may not converge (empty R, t) or should
+    // converge to some non-NaN solution
```

Review comment:
Can this check be replaced to `countNonZero(mat != mat) != 0`?
**File:** modules/calib3d/test/test_solvepnp_ransac.cpp
**Change Type:** modified
**Context:** PR #23607: Fix crash in ap3p
**Review Line:** 2282

**Code Changes:**
```diff
+        has = true;
+        CV_LOG_ERROR(NULL, "check hasNan called with unsupported type!");
+    }
+
+    return has;
+}
+
+TEST(AP3P, ctheta1p_nan_23607)
+{
+    // the task is not well defined and may not converge (empty R, t) or should
+    // converge to some non-NaN solution
```

Review comment:
No, this trick does not work with OpenCV. https://stackoverflow.com/questions/41759247/filter-opencv-mat-for-nan-values#
**File:** modules/dnn/src/layers/max_unpooling_layer.cpp
**Change Type:** modified
**Context:** PR #24039: TFLite models on different backends (tests and improvements)

**Code Changes:**
```diff
@@ -13,6 +13,7 @@ Implementation of Batch Normalization layer.
 #include "layers_common.hpp"
 #include "../op_cuda.hpp"
 #include "../op_halide.hpp"
+#include "../ie_ngraph.hpp"
 #include <opencv2/dnn/shape_utils.hpp>
 #include <opencv2/core/utils/logger.hpp>
 
@@ -41,6 +42,7 @@ class MaxUnpoolLayerImpl CV_FINAL : public MaxUnpoolLayer
     {
```

Review comment:
I propose to add assert to check size of `outShape` before access
**File:** modules/dnn/src/layers/max_unpooling_layer.cpp
**Change Type:** modified
**Context:** PR #24039: TFLite models on different backends (tests and improvements)

**Code Changes:**
```diff
@@ -13,6 +13,7 @@ Implementation of Batch Normalization layer.
 #include "layers_common.hpp"
 #include "../op_cuda.hpp"
 #include "../op_halide.hpp"
+#include "../ie_ngraph.hpp"
 #include <opencv2/dnn/shape_utils.hpp>
 #include <opencv2/core/utils/logger.hpp>
 
@@ -41,6 +42,7 @@ class MaxUnpoolLayerImpl CV_FINAL : public MaxUnpoolLayer
     {
```

Review comment:
Replaced to manual call of `getMemoryShapes`
**File:** modules/dnn/test/test_tflite_importer.cpp
**Change Type:** modified
**Context:** PR #24039: TFLite models on different backends (tests and improvements)
**Review Line:** 156

**Code Changes:**
```diff
     net.setInput(input);
 
     std::vector<std::vector<Mat> > outs;
-    net.forward(outs, {"p_re_lu_1", "max_pooling_with_argmax2d", "conv2d_86", "max_unpooling2d_2"});
+    if (backend == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH) {
+        // TODO: seems like a bug with a retrieving intermediate tensors
+        net.forward(outs, {"conv2d_transpose_4", "p_re_lu_1", "max_pooling_with_argmax2d", "conv2d_86", "max_unpooling2d_2"});
+        outs.erase(outs.begin());
+    }
+    else {
+        net.forward(outs, {"p_re_lu_1", "max_pooling_with_argmax2d", "conv2d_86", "max_unpooling2d_2"});
```

Review comment:
Please file a ticket about it.
**File:** modules/dnn/test/test_halide_layers.cpp
**Change Type:** modified
**Context:** PR #24039: TFLite models on different backends (tests and improvements)
**Review Line:** 366

**Code Changes:**
```diff
-    )
-        applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_MYRIAD, CV_TEST_TAG_DNN_SKIP_IE_VERSION);
-#endif
+    // https://github.com/openvinotoolkit/openvino/issues/18731
+    if (backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH && stride != Size(1, 1))
+        applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NGRAPH);
 
 #if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_GE(2019010000)
     if (backendId == DNN_BACKEND_INFERENCE_ENGINE_NN_BUILDER_2019 && targetId == DNN_TARGET_MYRIAD
@@ -467,6 +454,11 @@ TEST_P(FullyConnected, Accuracy)
     {
```

Review comment:
Please ignore, this must complicate this PR too much. Let's just skip for now
**File:** modules/dnn/test/test_tflite_importer.cpp
**Change Type:** modified
**Context:** PR #24039: TFLite models on different backends (tests and improvements)
**Review Line:** 156

**Code Changes:**
```diff
     net.setInput(input);
 
     std::vector<std::vector<Mat> > outs;
-    net.forward(outs, {"p_re_lu_1", "max_pooling_with_argmax2d", "conv2d_86", "max_unpooling2d_2"});
+    if (backend == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH) {
+        // TODO: seems like a bug with a retrieving intermediate tensors
+        net.forward(outs, {"conv2d_transpose_4", "p_re_lu_1", "max_pooling_with_argmax2d", "conv2d_86", "max_unpooling2d_2"});
+        outs.erase(outs.begin());
+    }
+    else {
+        net.forward(outs, {"p_re_lu_1", "max_pooling_with_argmax2d", "conv2d_86", "max_unpooling2d_2"});
```

Review comment:
https://github.com/opencv/opencv/issues/24102
**File:** modules/dnn/src/layers/pooling_layer.cpp
**Change Type:** modified
**Context:** PR #24039: TFLite models on different backends (tests and improvements)
**Review Line:** 619

**Code Changes:**
```diff
-                            ngraph::Shape(pads_begin), ngraph::Shape(pads_end), ngraph::Shape(kernel_size),
-                            rounding_type, pad_type);
+            std::shared_ptr<ngraph::Node> max_pool;
+            if (computeMaxIdx) {
+                std::vector<size_t> dilations(kernel_size.size(), 1);
+                max_pool = std::make_shared<ngraph::op::v8::MaxPool>(ieInpNode, ngraph::Strides(strides), ngraph::Strides(dilations),
+                                ngraph::Shape(pads_begin), ngraph::Shape(pads_end), ngraph::Shape(kernel_size),
+                                rounding_type, pad_type);
+            } else {
+                max_pool = std::make_shared<ngraph::op::v1::MaxPool>(ieInpNode, ngraph::Strides(strides),
+                                ngraph::Shape(pads_begin), ngraph::Shape(pads_end), ngraph::Shape(kernel_size),
```

Review comment:
There are broken weekly builds: ``` /build/4_x_openvino-opencl-skl-lin64/opencv/modules/dnn/src/layers/pooling_layer.cpp: In member function 'virtual cv::Ptr<cv::dnn::dnn4_v20230620::BackendNode> cv::dnn::PoolingLayerImpl::initNgraph(const std::vector<cv::Ptr<cv::dnn::dnn4_v20230620::BackendWrapper> >&, const std::vector<cv::Ptr<cv::dnn::dnn4_v20230620::BackendNode> >&)': /build/4_x_openvino-opencl-skl-lin64/opencv/modules/dnn/src/layers/pooling_layer.cpp:619:57: error: 'v8' is not a member of 'ngraph::op'; did you mean 'v7'? 619 | max_pool = std::make_shared<ngraph::op::v8::MaxPool>(ieInpNode, ngraph::Strides(strides), ngraph::Strides(dilations), | ^~ | v7 ``` https://pullrequest.opencv.org/buildbot/builders/4_x_openvino-opencl-skl-lin64/builds/100029 We still use OpenVINO 2021.4
**File:** modules/videoio/src/cap_ffmpeg_impl.hpp
**Change Type:** modified
**Context:** PR #24012: `VideoCapture`: remove decoder initialization when demuxing

**Code Changes:**
```diff
@@ -580,6 +580,7 @@ struct CvCapture_FFMPEG
     bool processRawPacket();
     bool rawMode;
     bool rawModeInitialized;
+    bool rawSeek;
     bool convertRGB;
     AVPacket packet_filtered;
 #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(58, 20, 100)
@@ -633,6 +634,7 @@ void CvCapture_FFMPEG::init()
 
```

Review comment:
It breaks some properties like CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT, information about camera rotation. Also `video_st` pointer is not initialized.
**File:** modules/videoio/src/cap_ffmpeg_impl.hpp
**Change Type:** modified
**Context:** PR #24012: `VideoCapture`: remove decoder initialization when demuxing

**Code Changes:**
```diff
@@ -580,6 +580,7 @@ struct CvCapture_FFMPEG
     bool processRawPacket();
     bool rawMode;
     bool rawModeInitialized;
+    bool rawSeek;
     bool convertRGB;
     AVPacket packet_filtered;
 #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(58, 20, 100)
@@ -633,6 +634,7 @@ void CvCapture_FFMPEG::init()
 
```

Review comment:
Yes sorry I thought the change would be simple but I was using the the wrong test case from cudacodec where `CAP_PROP_FORMAT` is set after initialization. I'll push the new changes a bit later after some more testing.
**File:** modules/videoio/src/cap_ffmpeg_impl.hpp
**Change Type:** modified
**Context:** PR #24012: `VideoCapture`: remove decoder initialization when demuxing
**Review Line:** 1175

**Code Changes:**
```diff
+        frame.width = video_st->codec->width;
+#else
+        frame.height = video_st->codecpar->height;
+        frame.width = video_st->codecpar->width;
+#endif
+        return true;
+    }
     for(i = 0; i < ic->nb_streams; i++)
     {
 #ifndef CV_FFMPEG_CODECPAR
@@ -1440,14 +1461,18 @@ bool CvCapture_FFMPEG::processRawPacket()
```

Review comment:
I propose to add `get_rotation_angle()` too. The encoded stream may contain rotation meta. In this case cuda codec has to handle it too (w and h may be swapped).
**File:** modules/videoio/test/test_ffmpeg.cpp
**Change Type:** modified
**Context:** PR #24012: `VideoCapture`: remove decoder initialization when demuxing
**Review Line:** 487

**Code Changes:**
```diff
+    EXPECT_TRUE(cap.set(CAP_PROP_POS_FRAMES, 18.));
+    EXPECT_EQ(cap.get(CAP_PROP_POS_FRAMES), 12.);
+    cap >> data;
+    EXPECT_EQ(CV_8UC1, data.type()) << "CV_8UC1 != " << typeToString(data.type());
+    EXPECT_TRUE(data.rows == 1 || data.cols == 1) << data.size;
+    EXPECT_EQ((size_t)8726, data.total());
+#endif
 }
 
 TEST(videoio_ffmpeg, ffmpeg_check_extra_data)
@@ -506,6 +516,16 @@ TEST(videoio_ffmpeg, open_with_property)
```

Review comment:
need to wrap it to `#ifndef WIN32` guard with todo to pass tests.
**File:** modules/videoio/src/cap_ffmpeg_impl.hpp
**Change Type:** modified
**Context:** PR #24012: `VideoCapture`: remove decoder initialization when demuxing
**Review Line:** 1175

**Code Changes:**
```diff
+        frame.width = video_st->codec->width;
+#else
+        frame.height = video_st->codecpar->height;
+        frame.width = video_st->codecpar->width;
+#endif
+        return true;
+    }
     for(i = 0; i < ic->nb_streams; i++)
     {
 #ifndef CV_FFMPEG_CODECPAR
@@ -1440,14 +1461,18 @@ bool CvCapture_FFMPEG::processRawPacket()
```

Review comment:
As rotation isn't supported by the Nvidia Video Codec SDK and RAW streams returned by `VideoCapture` will be encoded without the rotation shouldn't we just return the encoded width and height? This should be automatic as the rotation_angle == 0 in raw mode. ``` case CAP_PROP_FRAME_WIDTH: return (double)((rotation_auto && ((rotation_angle%180) != 0)) ? frame.height : frame.width); case CAP_PROP_FRAME_HEIGHT: return (double)((rotation_auto && ((rotation_angle%180) != 0)) ? frame.width : frame.height); ```
**File:** modules/core/src/lapack.cpp
**Change Type:** modified
**Context:** PR #23980: Rewrite Universal Intrinsic code by using new API: Core module.

**Code Changes:**
```diff
@@ -274,22 +274,21 @@ template<typename T> struct VBLAS
 {
     int dot(const T*, const T*, int, T*) const { return 0; }
     int givens(T*, T*, int, T, T) const { return 0; }
-    int givensx(T*, T*, int, T, T, T*, T*) const { return 0; }
 };
 
-#if CV_SIMD
+#if CV_SIMD // TODO: enable for CV_SIMD_SCALABLE_64F
 template<> inline int VBLAS<float>::dot(const float* a, const float* b, int n, float* result) const
```

Review comment:
Let's also disable this block for now. Without it core tests pass for me (built with GCC 13.2).
**File:** modules/core/src/lapack.cpp
**Change Type:** modified
**Context:** PR #23980: Rewrite Universal Intrinsic code by using new API: Core module.

**Code Changes:**
```diff
@@ -274,22 +274,21 @@ template<typename T> struct VBLAS
 {
     int dot(const T*, const T*, int, T*) const { return 0; }
     int givens(T*, T*, int, T, T) const { return 0; }
-    int givensx(T*, T*, int, T, T, T*, T*) const { return 0; }
 };
 
-#if CV_SIMD
+#if CV_SIMD // TODO: enable for CV_SIMD_SCALABLE_64F
 template<> inline int VBLAS<float>::dot(const float* a, const float* b, int n, float* result) const
```

Review comment:
BTW, this function (`givensx`) can be removed competely. It is not used anywhere and have error in float implementation (`sa += t0 + t1` should be `sa += t0 * t1`) for 7 years.
**File:** samples/python/tst_scene_render.py
**Change Type:** modified
**Context:** PR #24116: fix python sample code (tst_scene_render)

**Code Changes:**
```diff
@@ -25,7 +25,7 @@ def __init__(self, bgImg = None, fgImg = None,
         if bgImg is not None:
             self.sceneBg = bgImg.copy()
         else:
-            self.sceneBg = np.zeros(defaultSize, defaultSize, np.uint8)
+            self.sceneBg = np.zeros((defaultSize, defaultSize,3), np.uint8)
 
         self.w = self.sceneBg.shape[0]
         self.h = self.sceneBg.shape[1]
@@ -85,7 +85,7 @@ def getNextFrame(self):
```

Review comment:
please remove dead code.
**File:** samples/python/tst_scene_render.py
**Change Type:** modified
**Context:** PR #24116: fix python sample code (tst_scene_render)

**Code Changes:**
```diff
@@ -25,7 +25,7 @@ def __init__(self, bgImg = None, fgImg = None,
         if bgImg is not None:
             self.sceneBg = bgImg.copy()
         else:
-            self.sceneBg = np.zeros(defaultSize, defaultSize, np.uint8)
+            self.sceneBg = np.zeros((defaultSize, defaultSize,3), np.uint8)
 
         self.w = self.sceneBg.shape[0]
         self.h = self.sceneBg.shape[1]
@@ -85,7 +85,7 @@ def getNextFrame(self):
```

Review comment:
Deleted the code
**File:** modules/dnn/src/onnx/onnx_importer.cpp
**Change Type:** modified
**Context:** PR #24101: Invalid memory access fix for ONNX split layer parser #24076

**Code Changes:**
```diff
@@ -1385,13 +1385,19 @@ void ONNXImporter::parseSplit(LayerParams& layerParams, const opencv_onnx::NodeP
         CV_Assert(constBlobs.find(node_proto.input(1)) != constBlobs.end());
         Mat splitsBlob = getBlob(node_proto, 1);
         int splitSize = splitsBlob.total();
-
-        std::vector<int> slicePoints(splitSize - 1, splitsBlob.at<int>(0));
-        for (int i = 1; i < splitSize - 1; ++i)
+        if (splitSize == 1)
+        {
+            layerParams.set("num_split", 1);
```

Review comment:
`slicePoints.empty()` is better IMHO.