nareshmlx/opencv-pr huggingface dataset:
**File:** modules/highgui/doc/highgui_qt.cpp
**Change Type:** added
**Context:** PR #25042: Documentation transition to fresh Doxygen - * current Doxygen version is 1.10, but we will use 1.9.8 for now due to issue with snippets (ht...

**Code Changes:**
```diff
@@ -0,0 +1,39 @@
+#include "opencv2/highgui.hpp"
+
+int main(int argc, char *argv[])
+{
+    int value = 50;
+    int value2 = 0;
+
+    namedWindow("main1",WINDOW_NORMAL);
+    namedWindow("main2",WINDOW_AUTOSIZE | WINDOW_GUI_NORMAL);
```

Review comment:
Do you mean empty lines? I'll remove them.
**File:** doc/CMakeLists.txt
**Change Type:** modified
**Context:** PR #25042: Documentation transition to fresh Doxygen - * current Doxygen version is 1.10, but we will use 1.9.8 for now due to issue with snippets (ht...

**Code Changes:**
```diff
@@ -16,6 +16,10 @@ endif()
 
 find_package(Doxygen)
 if(DOXYGEN_FOUND)
+  if (DOXYGEN_VERSION VERSION_LESS 1.9.8)
+    message(WARNING "Found doxygen ${DOXYGEN_VERSION}, version 1.9.8 is used for testing, there is
+                     a chance your documentation will look different or have some limitations.")
+  endif()
   add_custom_target(doxygen)
 
```

Review comment:
There is no specific issue which breaks documentation when building with older Doxygen, there might be several warnings here and there, and it might look fiine. I just wanted to explicitly specify version we use in CI and for docs.opencv.org. Also, I forgot to change it to 1.9.8 - will fix.
**File:** doc/CMakeLists.txt
**Change Type:** modified
**Context:** PR #25042: Documentation transition to fresh Doxygen - * current Doxygen version is 1.10, but we will use 1.9.8 for now due to issue with snippets (ht...

**Code Changes:**
```diff
@@ -16,6 +16,10 @@ endif()
 
 find_package(Doxygen)
 if(DOXYGEN_FOUND)
+  if (DOXYGEN_VERSION VERSION_LESS 1.9.8)
+    message(WARNING "Found doxygen ${DOXYGEN_VERSION}, version 1.9.8 is used for testing, there is
+                     a chance your documentation will look different or have some limitations.")
+  endif()
   add_custom_target(doxygen)
 
```

Review comment:
Major issue users can met with older Doxygen versions is broken MathJax support - here I switched to MathJax 3 which is only supported since Doxygen 1.9.2 (https://www.doxygen.nl/manual/changelog.html). Technically we can support older versions with MathJax 2 using cmake, but question is whether it is really necessary, or who might require such support. My argument against it is that Doxygen is a portable application and can be installed on any major system from an archive or, alternatively, users can patch Doxyfile.in for their needs.
**File:** doc/CMakeLists.txt
**Change Type:** modified
**Context:** PR #25042: Documentation transition to fresh Doxygen - * current Doxygen version is 1.10, but we will use 1.9.8 for now due to issue with snippets (ht...
**Review Line:** 198

**Code Changes:**
```diff
   # not documented modules list
@@ -191,6 +195,8 @@ if(DOXYGEN_FOUND)
   list(APPEND CMAKE_DOXYGEN_HTML_FILES "${CMAKE_CURRENT_SOURCE_DIR}/tutorial-utils.js")
   string(REPLACE ";" " \\\n" CMAKE_DOXYGEN_HTML_FILES "${CMAKE_DOXYGEN_HTML_FILES}")
 
+  set(OPENCV_MATHJAX_RELPATH "https://cdn.jsdelivr.net/npm/mathjax@3.0.1" CACHE STRING "URI to a MathJax installation")
+
   set(OPENCV_DOCS_DOT_PATH "" CACHE PATH "Doxygen/DOT_PATH value")
   set(CMAKECONFIG_DOT_PATH "${OPENCV_DOCS_DOT_PATH}")
 
```

Review comment:
> `if(DOXYGEN_FOUND)` > `OPENCV_MATHJAX_RELPATH` This variable is used in Javadoc too which could be build without Doxygen. Moving from the root CMake script is wrong. P.S. History is broken due to removal.
**File:** modules/core/include/opencv2/core/utility.hpp
**Change Type:** modified
**Context:** PR #25237: doc: add note on handling of spaces in CommandLineParser

**Code Changes:**
```diff
@@ -773,7 +773,7 @@ The sample below demonstrates how to use CommandLineParser:
 The keys parameter is a string containing several blocks, each one is enclosed in curly braces and
 describes one argument. Each argument contains three parts separated by the `|` symbol:
 
--# argument names is a space-separated list of option synonyms (to mark argument as positional, prefix it with the `@` symbol)
+-# argument names is a list of option synonyms separated by standard space characters ' ' (to mark argument as positional, prefix it with the `@` symbol)
 -# default value will be used if the argument was not provided (can be empty)
 -# help message (can be empty)
 
@@ -796,6 +796,8 @@ For example:
```

Review comment:
It's too strong statement, as there is no `0x20` constant in the code. The value comes from here: https://github.com/opencv/opencv/blob/0b6c9a2123a8ff1fc0d9e340c8d0132dac3edb6b/modules/core/src/command_line_parser.cpp#L46 It's just space `' '` symbol in source code. I propose to re-write it more generic: "argument names is a list of option synonyms separated by standard space characters".
**File:** 3rdparty/libtiff/CMakeLists.txt
**Change Type:** modified
**Context:** PR #25096: libtiff upgrade to version 4.6.0
**Review Line:** 374

**Code Changes:**
```diff
                @ONLY)
 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/tiffconf.h.cmake.in"
                "${CMAKE_CURRENT_BINARY_DIR}/tiffconf.h"
                @ONLY)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/tiffvers.h.cmake.in"
+               "${CMAKE_CURRENT_BINARY_DIR}/tiffvers.h"
+               @ONLY)
 
 ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" ${ZLIB_INCLUDE_DIRS})
 
@@ -399,6 +393,7 @@ set(lib_srcs
```

Review comment:
LIBTIFF_VERSION, LIBTIFF_MAJOR_VERSION, etc are expected to be set in CMake for `tiffvers.h.cmake.in`, but they are not.
**File:** modules/dnn/src/onnx/onnx_importer.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser
**Review Line:** 2427

**Code Changes:**
```diff
@@ -2411,13 +2424,13 @@ void ONNXImporter::parseShape(LayerParams& layerParams, const opencv_onnx::NodeP
     int dims = static_cast<int>(inpShape.size());
     if (isInput1D)
         dims = 1;
-    Mat shapeMat(1, dims, CV_32S);
+    Mat shapeMat(1, dims, CV_64S);
     bool isDynamicShape = false;
     for (int j = 0; j < dims; ++j)
     {
         int sz = inpShape[j];
         isDynamicShape |= (sz == 0);
```

Review comment:
Why not keep shapeMat as CV_32S?
**File:** modules/dnn/src/onnx/onnx_importer.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser
**Review Line:** 2427

**Code Changes:**
```diff
@@ -2411,13 +2424,13 @@ void ONNXImporter::parseShape(LayerParams& layerParams, const opencv_onnx::NodeP
     int dims = static_cast<int>(inpShape.size());
     if (isInput1D)
         dims = 1;
-    Mat shapeMat(1, dims, CV_32S);
+    Mat shapeMat(1, dims, CV_64S);
     bool isDynamicShape = false;
     for (int j = 0; j < dims; ++j)
     {
         int sz = inpShape[j];
         isDynamicShape |= (sz == 0);
```

Review comment:
ONNX Shape layer should return int64 values https://github.com/onnx/onnx/blob/main/docs/Operators.md#Shape There are some tests, which fails when Shape layer returns int32 values.
**File:** modules/dnn/src/layers/cast_layer.cpp
**Change Type:** added
**Context:** PR #25148: Allowed int64 constants in ONNX parser
**Review Line:** 84

**Code Changes:**
```diff
+
+        if (inputs[0].depth() == outputs[0].depth())
+            inputs[0].copyTo(outputs[0]);
+        else
+            inputs[0].convertTo(outputs[0], outputs[0].depth());
+    }
+
+private:
+    int outputType;
+};
+
```

Review comment:
Please add OpenCL version with `UMat::convertTo`
**File:** modules/dnn/src/onnx/onnx_importer.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser
**Review Line:** 87

**Code Changes:**
```diff
@@ -84,6 +84,7 @@ class ONNXImporter
                                     const opencv_onnx::GraphProto& graph_proto);
     Mat getBlob(const opencv_onnx::NodeProto& node_proto, int index);
     Mat getBlob(const std::string& input_name);
+    Mat getIntBlob(const opencv_onnx::NodeProto& node_proto, int index);
     TensorInfo getBlobExtraInfo(const opencv_onnx::NodeProto& node_proto, int index);
     TensorInfo getBlobExtraInfo(const std::string& input_name);
 
@@ -596,6 +597,20 @@ Mat ONNXImporter::getBlob(const std::string& input_name)
     return constBlob->second;
```

Review comment:
Overload `getBlob` or update the signature? e.g. `Mat getBlob(const opencv_onnx::Nodeproto& node_proto, int index, int return_dtype)`.
**File:** modules/dnn/src/onnx/onnx_importer.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser
**Review Line:** 87

**Code Changes:**
```diff
@@ -84,6 +84,7 @@ class ONNXImporter
                                     const opencv_onnx::GraphProto& graph_proto);
     Mat getBlob(const opencv_onnx::NodeProto& node_proto, int index);
     Mat getBlob(const std::string& input_name);
+    Mat getIntBlob(const opencv_onnx::NodeProto& node_proto, int index);
     TensorInfo getBlobExtraInfo(const opencv_onnx::NodeProto& node_proto, int index);
     TensorInfo getBlobExtraInfo(const std::string& input_name);
 
@@ -596,6 +597,20 @@ Mat ONNXImporter::getBlob(const std::string& input_name)
     return constBlob->second;
```

Review comment:
I think it will not look good, because the logic of the functions is different: getBlob should accept any type and return the raw blob, getIntBlob should accept only int64 or int32 types and return the blob converted to int32
**File:** modules/dnn/test/test_int.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser

**Code Changes:**
```diff
@@ -6,9 +6,21 @@
 // Third party copyrights are property of their respective owners.
 
 #include "test_precomp.hpp"
+#include <opencv2/dnn/shape_utils.hpp>
 
 namespace opencv_test { namespace {
 
+int64_t getValueAt(const Mat &m, const int *indices)
+{
```

Review comment:
Doesn't [randu](https://docs.opencv.org/5.x/d2/de8/group__core__array.html#ga1ba1026dca0807b27057ba6a49d258c0) fit required data types?
**File:** modules/dnn/test/test_int.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser
**Review Line:** 13

**Code Changes:**
```diff
 #include "test_precomp.hpp"
+#include <opencv2/dnn/shape_utils.hpp>
 
 namespace opencv_test { namespace {
 
+int64_t getValueAt(const Mat &m, const int *indices)
+{
+    if (m.type() == CV_32S)
+        return m.at<int32_t>(indices);
+    else if (m.type() == CV_64S)
+        return m.at<int64_t>(indices);
```

Review comment:
I think this method is not very generic
**File:** modules/dnn/test/test_int.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser

**Code Changes:**
```diff
@@ -6,9 +6,21 @@
 // Third party copyrights are property of their respective owners.
 
 #include "test_precomp.hpp"
+#include <opencv2/dnn/shape_utils.hpp>
 
 namespace opencv_test { namespace {
 
+int64_t getValueAt(const Mat &m, const int *indices)
+{
```

Review comment:
Does it work with int64? I need big values to check that we don't cast int64 values inside dnn
**File:** modules/dnn/test/test_int.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser
**Review Line:** 13

**Code Changes:**
```diff
 #include "test_precomp.hpp"
+#include <opencv2/dnn/shape_utils.hpp>
 
 namespace opencv_test { namespace {
 
+int64_t getValueAt(const Mat &m, const int *indices)
+{
+    if (m.type() == CV_32S)
+        return m.at<int32_t>(indices);
+    else if (m.type() == CV_64S)
+        return m.at<int64_t>(indices);
```

Review comment:
It will be used only for integer tests in this file. test_int.cpp will contain a lot of simple tests with int operations. Each test should have int32 and int64 versions. Each test will use randomIntMat to generate random values with int32 or int64 type with appropriate range and will use gatValueAt to check values of int32 or int64 type.
**File:** modules/dnn/test/test_int.cpp
**Change Type:** modified
**Context:** PR #25148: Allowed int64 constants in ONNX parser

**Code Changes:**
```diff
@@ -6,9 +6,21 @@
 // Third party copyrights are property of their respective owners.
 
 #include "test_precomp.hpp"
+#include <opencv2/dnn/shape_utils.hpp>
 
 namespace opencv_test { namespace {
 
+int64_t getValueAt(const Mat &m, const int *indices)
+{
```

Review comment:
That seems working, yes: ```cpp Mat a(1, 5, CV_64S, Scalar(0)); cv::randu(a, pow(2L, 5), LLONG_MAX); std::cout << a << std::endl; ``` ``` [2598889899411822216, 5139869645836315984, 5791353558368746828, 1845221523294552719, 2245250195598578852] ``` ```
**File:** CMakeLists.txt
**Change Type:** modified
**Context:** PR #24136: Add experimental support for Apple VisionOS platform

**Code Changes:**
```diff
@@ -239,9 +239,9 @@ OCV_OPTION(BUILD_ITT                "Build Intel ITT from source"
 # Optional 3rd party components
 # ===================================================
 OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON
-  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT WINRT
+  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT XROS AND NOT WINRT
   VERIFY HAVE_DC1394_2)
-OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/Mac)" ON
+OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/visionOS/Mac)" ON
   VISIBLE_IF APPLE
```

Review comment:
TEngine support was dropped in some previous PRs as not supported by the original author. Please rebase on current 4.x.
**File:** platforms/ios/cmake/Toolchains/common-ios-toolchain.cmake
**Change Type:** modified
**Context:** PR #24136: Add experimental support for Apple VisionOS platform

**Code Changes:**
```diff
@@ -61,26 +61,45 @@ else()
   endmacro()
 endif() # IN_TRY_COMPILE
 
-if(NOT DEFINED IOS_ARCH)
+if((IPHONEOS OR IPHONESIMULATOR) AND NOT DEFINED IOS_ARCH)
   message(FATAL_ERROR "iOS toolchain requires ARCH option for proper configuration of compiler flags")
 endif()
-if(IOS_ARCH MATCHES "^arm64")
+if((VISIONOS OR VISIONSIMULATOR) AND NOT DEFINED VISIONOS_ARCH)
```

Review comment:
It breaks iOS configuration.
**File:** CMakeLists.txt
**Change Type:** modified
**Context:** PR #24136: Add experimental support for Apple VisionOS platform

**Code Changes:**
```diff
@@ -239,9 +239,9 @@ OCV_OPTION(BUILD_ITT                "Build Intel ITT from source"
 # Optional 3rd party components
 # ===================================================
 OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON
-  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT WINRT
+  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT XROS AND NOT WINRT
   VERIFY HAVE_DC1394_2)
-OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/Mac)" ON
+OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/visionOS/Mac)" ON
   VISIBLE_IF APPLE
```

Review comment:
I see a lot of `IOS AND VISIONOS` in pair. Is there a united variable for all? Like this: ```cmake OCV_OPTION(WITH_OPENJPEG "Include JPEG2K support (OpenJPEG)" ON VISIBLE_IF NOT APPLE ```
**File:** platforms/ios/cmake/Toolchains/common-ios-toolchain.cmake
**Change Type:** modified
**Context:** PR #24136: Add experimental support for Apple VisionOS platform

**Code Changes:**
```diff
@@ -61,26 +61,45 @@ else()
   endmacro()
 endif() # IN_TRY_COMPILE
 
-if(NOT DEFINED IOS_ARCH)
+if((IPHONEOS OR IPHONESIMULATOR) AND NOT DEFINED IOS_ARCH)
   message(FATAL_ERROR "iOS toolchain requires ARCH option for proper configuration of compiler flags")
 endif()
-if(IOS_ARCH MATCHES "^arm64")
+if((VISIONOS OR VISIONSIMULATOR) AND NOT DEFINED VISIONOS_ARCH)
```

Review comment:
I was testing to see if I need to add something similar for visionOS but commenting out this line didn't break anything on the iOS build so I'm not sure its needed any more. I can add it back just in case
**File:** CMakeLists.txt
**Change Type:** modified
**Context:** PR #24136: Add experimental support for Apple VisionOS platform

**Code Changes:**
```diff
@@ -239,9 +239,9 @@ OCV_OPTION(BUILD_ITT                "Build Intel ITT from source"
 # Optional 3rd party components
 # ===================================================
 OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON
-  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT WINRT
+  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT XROS AND NOT WINRT
   VERIFY HAVE_DC1394_2)
-OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/Mac)" ON
+OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/visionOS/Mac)" ON
   VISIBLE_IF APPLE
```

Review comment:
Rebased and force pushed
**File:** CMakeLists.txt
**Change Type:** modified
**Context:** PR #24136: Add experimental support for Apple VisionOS platform

**Code Changes:**
```diff
@@ -239,9 +239,9 @@ OCV_OPTION(BUILD_ITT                "Build Intel ITT from source"
 # Optional 3rd party components
 # ===================================================
 OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON
-  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT WINRT
+  VISIBLE_IF NOT ANDROID AND NOT IOS AND NOT XROS AND NOT WINRT
   VERIFY HAVE_DC1394_2)
-OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/Mac)" ON
+OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/visionOS/Mac)" ON
   VISIBLE_IF APPLE
```

Review comment:
APPLE also includes macOS I guess we could make something like APPLE_DEVICE but I feel like the names IOS and VISIONOS are going to be easier to understand for maintainers
**File:** modules/gapi/doc/00-root.markdown
**Change Type:** modified
**Context:** PR #25161: Documentation transition to fresh Doxygen (5.x) - Port of #25042 Merge with opencv/opencv_contrib#3687 CI part: opencv/ci-gha-workflow#162 ...

**Code Changes:**
```diff
@@ -41,6 +41,10 @@ G-API documentation is organized into the following chapters:
 
 - API Reference: functions and classes
 
+    - @subpage gapi_ref
+
+      Core G-API classes, data types, backends, etc.
+
     - @subpage gapi_core
 
```

Review comment:
something wrong here.
**File:** modules/gapi/doc/00-root.markdown
**Change Type:** modified
**Context:** PR #25161: Documentation transition to fresh Doxygen (5.x) - Port of #25042 Merge with opencv/opencv_contrib#3687 CI part: opencv/ci-gha-workflow#162 ...

**Code Changes:**
```diff
@@ -41,6 +41,10 @@ G-API documentation is organized into the following chapters:
 
 - API Reference: functions and classes
 
+    - @subpage gapi_ref
+
+      Core G-API classes, data types, backends, etc.
+
     - @subpage gapi_core
 
```

Review comment:
Same issue on 4.x, I'll add a fix for it to the #25162
**File:** modules/gapi/include/opencv2/gapi/gmat.hpp
**Change Type:** modified
**Context:** PR #25055: G-API: A quick value-initialization support GMat
**Review Line:** 90

**Code Changes:**
```diff
+     * change during the program execution, and is set only once.
+     * In this case, there's no need to declare such GMat as graph input.
+     *
+     * @param m a cv::Mat buffer to associate with this GMat object.
+     */
+    GAPI_WRAP explicit GMat(cv::Mat m);     // Value-initialization constructor
+
     /// @private
     GMat(const GNode &n, std::size_t out);  // Operation result constructor
     /// @private
```

Review comment:
Wondering if it's really working from `python`, do you plan to add any test to check that, or it will be done later on?
**File:** modules/gapi/include/opencv2/gapi/gmat.hpp
**Change Type:** modified
**Context:** PR #25055: G-API: A quick value-initialization support GMat
**Review Line:** 90

**Code Changes:**
```diff
+     * change during the program execution, and is set only once.
+     * In this case, there's no need to declare such GMat as graph input.
+     *
+     * @param m a cv::Mat buffer to associate with this GMat object.
+     */
+    GAPI_WRAP explicit GMat(cv::Mat m);     // Value-initialization constructor
+
     /// @private
     GMat(const GNode &n, std::size_t out);  // Operation result constructor
     /// @private
```

Review comment:
I believe it should work in the same way as for `GScalar(cv::Scalar)`, isn't it?
**File:** modules/dnn/test/test_onnx_importer.cpp
**Change Type:** modified
**Context:** PR #23897: dnn: add gemm_layer in place of fully_connected_layer for onnx models

**Code Changes:**
```diff
@@ -2597,6 +2597,40 @@ TEST_P(Test_ONNX_layers, where_node)
     testONNXModels("where_layer");
 }
 
+TEST_P(Test_ONNX_layers, Conformance_Gemm_all_attributes) {
+    testONNXModels("test_gemm_all_attributes", pb, 0, 0, false, true, 2);
+}
+TEST_P(Test_ONNX_layers, Conformance_Gemm_alpha) {
+    testONNXModels("test_gemm_alpha", pb, 0, 0, false, true, 2);
+}
```

Review comment:
We should not introduce regressions for previously supported models. You could add new test cases, but you can't just drop them.
**File:** modules/dnn/test/test_onnx_importer.cpp
**Change Type:** modified
**Context:** PR #23897: dnn: add gemm_layer in place of fully_connected_layer for onnx models

**Code Changes:**
```diff
@@ -2597,6 +2597,40 @@ TEST_P(Test_ONNX_layers, where_node)
     testONNXModels("where_layer");
 }
 
+TEST_P(Test_ONNX_layers, Conformance_Gemm_all_attributes) {
+    testONNXModels("test_gemm_all_attributes", pb, 0, 0, false, true, 2);
+}
+TEST_P(Test_ONNX_layers, Conformance_Gemm_alpha) {
+    testONNXModels("test_gemm_alpha", pb, 0, 0, false, true, 2);
+}
```

Review comment:
It is just wrong when you force it running with batch size >= 2 while it has a reshape operator always reshaping the batch size to be 1 (more details [here](https://github.com/opencv/opencv_extra/pull/1073#issue-1782223950)). Why do we have to keep a wrong thing in our tests? It does not make sense to replicate bugs in a refactor implementation.
**File:** modules/dnn/test/test_onnx_importer.cpp
**Change Type:** modified
**Context:** PR #23897: dnn: add gemm_layer in place of fully_connected_layer for onnx models

**Code Changes:**
```diff
@@ -2597,6 +2597,40 @@ TEST_P(Test_ONNX_layers, where_node)
     testONNXModels("where_layer");
 }
 
+TEST_P(Test_ONNX_layers, Conformance_Gemm_all_attributes) {
+    testONNXModels("test_gemm_all_attributes", pb, 0, 0, false, true, 2);
+}
+TEST_P(Test_ONNX_layers, Conformance_Gemm_alpha) {
+    testONNXModels("test_gemm_alpha", pb, 0, 0, false, true, 2);
+}
```

Review comment:
Am I right that original model is not available anymore? https://s3.amazonaws.com/download.onnx/models/opset_8/bvlc_googlenet.tar.gz ``` Model <GoogleNet (ONNX)> expect 739732220ba2e3efa88f7c26f13badad9b7514bc catch [Errno 2] No such file or directory: 'bvlc_googlenet.tar.gz' hash check failed - downloading get https://s3.amazonaws.com/download.onnx/models/opset_8/bvlc_googlenet.tar.gz catch HTTP Error 403: Forbidden ``` Also, if a new model from https://drive.google.com/u/0/uc?id=1FucNLURGgdPk4nCxT0378isPigCcbZ1M&export=download is a personal Google Drive with a modified file, I think it's not a good idea.
**File:** modules/dnn/test/test_onnx_importer.cpp
**Change Type:** modified
**Context:** PR #23897: dnn: add gemm_layer in place of fully_connected_layer for onnx models

**Code Changes:**
```diff
@@ -2597,6 +2597,40 @@ TEST_P(Test_ONNX_layers, where_node)
     testONNXModels("where_layer");
 }
 
+TEST_P(Test_ONNX_layers, Conformance_Gemm_all_attributes) {
+    testONNXModels("test_gemm_all_attributes", pb, 0, 0, false, true, 2);
+}
+TEST_P(Test_ONNX_layers, Conformance_Gemm_alpha) {
+    testONNXModels("test_gemm_alpha", pb, 0, 0, false, true, 2);
+}
```

Review comment:
Due even opset 12 version has Reshape with 1x1024 hardcoded shapes, I think it does not make sense to update the model with Flatten. However still there is a need to update URL/model/data. So I recommend this: https://github.com/onnx/models/tree/main/vision/classification/inception_and_googlenet/googlenet