nareshmlx/opencv-pr huggingface dataset:
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
Enum values are UPPERCASE.
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
It is better to add `toString()`: - no template - binding friendly --- > const BarcodeType &barcode_type) just value. drop reference.
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
> `= ""` `= std::string()` --- It is better to introduce default ctor instead of passing default values: `CV_WRAP BarcodeDetector();`
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
> Extra Are there other options?
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
> BarcodeType Perhaps it makes sense to drop enum completely from API and just return `std::string`.
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
Do you mean `vector<string> & decoded_type`? Or drop code type info completely?
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
`std::vector<std::string>&`
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
There is a check in the barcode sample: `const bool isDecodable = ... && decode_type[idx] != barcode::BarcodeType::Barcode_NONE;` Then should we define string constants which can be returned in this collection? ```.cpp static const std::string Barcode::BARCODE_NONE = "NONE"; static const std::string Barcode::BARCODE_EAN_8 = "EAN_8"; ... ``` Or should we add a function (static method) `bool BarcodeDetector::isValidType(const std::string & type)` which user might use for this purpose?
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
Do you mean naming alternatives? :thinking: Maybe: ``` decodeWithType(...) detectAndDecodeWithType(...) ``` Or combination with some other words like `advanced`, `plus`, `meta`...
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
> There is a check May be switch that to the empty string `""` (instead of `"NONE"`). > `static const std::string Barcode::BARCODE_EAN_8 = "EAN_8";` I believe we could postpone this in public API.
**File:** modules/objdetect/include/opencv2/objdetect/barcode.hpp
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,65 @@
+// 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) 2020-2021 darkliang wangberlinT Certseeds
+
+#ifndef OPENCV_OBJDETECT_BARCODE_HPP
+#define OPENCV_OBJDETECT_BARCODE_HPP
+
+#include <opencv2/core.hpp>
```

Review comment:
I believe `withType` is a better option here (more self-descriptive than "extra")
**File:** doc/tutorials/others/barcode_detect_and_decode.markdown
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,76 @@
+Barcode Recognition    {#tutorial_barcode_detect_and_decode}
+===================
+
+@tableofcontents
+
+@prev_tutorial{tutorial_traincascade}
+@next_tutorial{tutorial_introduction_to_svm}
+
+|    |    |
```

Review comment:
It's not downloaded automatically.
**File:** doc/tutorials/others/barcode_detect_and_decode.markdown
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,76 @@
+Barcode Recognition    {#tutorial_barcode_detect_and_decode}
+===================
+
+@tableofcontents
+
+@prev_tutorial{tutorial_traincascade}
+@next_tutorial{tutorial_introduction_to_svm}
+
+|    |    |
```

Review comment:
Barcode sample is located in wrong place: `modules/objdetect/samples/barcode.cpp`, but should be in `samples/cpp/barcode.cpp`.
**File:** doc/tutorials/others/barcode_detect_and_decode.markdown
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,76 @@
+Barcode Recognition    {#tutorial_barcode_detect_and_decode}
+===================
+
+@tableofcontents
+
+@prev_tutorial{tutorial_traincascade}
+@next_tutorial{tutorial_introduction_to_svm}
+
+|    |    |
```

Review comment:
Technically OpenCV supports module-specific samples (like in OpenCV contrib). I decided to put it there because it demonstrates `objdetect` module functionality. Perhaps we can continue moving C++ samples to their respective modules to reduce this list: https://github.com/opencv/opencv/blob/19f4f2eb92313cfe688ba924a784fa775c99ae4c/samples/cpp/CMakeLists.txt#L3-L21 If you think it is better to move it to others (`samples/cpp`) I will do it.
**File:** doc/tutorials/others/barcode_detect_and_decode.markdown
**Change Type:** added
**Context:** PR #23666: Moved barcode from opencv_contrib - Merge with https://github.com/opencv/opencv_contrib/pull/3497 ##### TODO - [x] Documentation (bib) - [x...

**Code Changes:**
```diff
@@ -0,0 +1,76 @@
+Barcode Recognition    {#tutorial_barcode_detect_and_decode}
+===================
+
+@tableofcontents
+
+@prev_tutorial{tutorial_traincascade}
+@next_tutorial{tutorial_introduction_to_svm}
+
+|    |    |
```

Review comment:
It's very unusual for main opencv repo and users do not search for samples in modules source code. I propose to put it to expected places and introduce new practice later globally.
**File:** platforms/js/opencv_js.config.py
**Change Type:** modified
**Context:** PR #23725: Refreshed JavaScript bindings for Aruco related algorithms

**Code Changes:**
```diff
@@ -108,13 +108,23 @@
     ],
 }
 
-objdetect = {'': ['groupRectangles'],
+objdetect = {'': ['groupRectangles', 'getPredefinedDictionary', 'extendDictionary',
+                  'drawDetectedMarkers', 'generateImageMarker', 'drawDetectedCornersCharuco',
+                  'drawDetectedDiamonds'],
              'HOGDescriptor': ['load', 'HOGDescriptor', 'getDefaultPeopleDetector', 'getDaimlerPeopleDetector', 'setSVMDetector', 'detectMultiScale'],
              'CascadeClassifier': ['load', 'detectMultiScale2', 'CascadeClassifier', 'detectMultiScale3', 'empty', 'detectMultiScale'],
```

Review comment:
syntax error during compilation: missing comma at the end of this line
**File:** modules/gapi/include/opencv2/gapi/streaming/cap.hpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo

**Code Changes:**
```diff
@@ -22,6 +22,7 @@
  * because of this file.
  */
 #include <chrono>
+#include <map>
 
 #include <opencv2/videoio.hpp>
 #include <opencv2/gapi/garg.hpp>
@@ -47,8 +48,16 @@ namespace wip {
 class GCaptureSource: public IStreamSource
```

Review comment:
Well, I wish it was separate method `set` but properties must be set before the first frame is read (`prep()`)
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo
**Review Line:** 132

**Code Changes:**
```diff
+                fontScale, cv::Scalar(255, 255, 255), thickness + 1);
+    cv::putText(mat, message, position, fontFace, fontScale, color, thickness);
+}
+
+static void drawResults(cv::Mat &img, const cv::Mat &color_mask) {
+    img = img / 2 + color_mask / 2;
+}
+
+} // namespace vis
+
 namespace custom {
```

Review comment:
Not so efficient due reallocations but it doesn't impact performance
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo
**Review Line:** 173

**Code Changes:**
```diff
         }
-
         cv::Mat mask_img;
         classesToColors(classes, mask_img);
-        cv::resize(mask_img, out, in.size());
+        cv::resize(mask_img, out, in.size(), 0, 0, cv::INTER_NEAREST);
     }
 };
 } // namespace custom
@@ -134,6 +186,7 @@ int main(int argc, char *argv[]) {
     const std::string input  = cmd.get<std::string>("input");
```

Review comment:
`INTER_NEAREST` is better when it comes to resize color mask
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo
**Review Line:** 215

**Code Changes:**
```diff
+    std::shared_ptr<cv::gapi::wip::GCaptureSource> source;
+    if (isNumber(input)) {
+        source = std::make_shared<cv::gapi::wip::GCaptureSource>(
+            std::stoi(input),
+            std::map<int, double> {
+              {cv::CAP_PROP_FRAME_WIDTH, 1280},
+              {cv::CAP_PROP_FRAME_HEIGHT, 720},
+              {cv::CAP_PROP_BUFFERSIZE, 1},
+              {cv::CAP_PROP_AUTOFOCUS, true}
+            }
+        );
```

Review comment:
Hardcoded so far, not sure if it should be `cmd` option
**File:** modules/gapi/include/opencv2/gapi/streaming/cap.hpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo

**Code Changes:**
```diff
@@ -22,6 +22,7 @@
  * because of this file.
  */
 #include <chrono>
+#include <map>
 
 #include <opencv2/videoio.hpp>
 #include <opencv2/gapi/garg.hpp>
@@ -47,8 +48,16 @@ namespace wip {
 class GCaptureSource: public IStreamSource
```

Review comment:
Not exposed to python so far...
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo
**Review Line:** 43

**Code Changes:**
```diff
+    { 0, 64, 0 },
+    { 0, 64, 128 },
+    { 0, 192, 0 },
+    { 0, 192, 128 },
+    { 128, 64, 0 }
 };
 
 namespace {
@@ -43,12 +50,23 @@ std::string get_weights_path(const std::string &model_path) {
 
     auto ext = model_path.substr(sz - EXT_LEN);
```

Review comment:
What's the reason for this change? Previously it was just one line per class, easy to edit.
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo
**Review Line:** 132

**Code Changes:**
```diff
+                fontScale, cv::Scalar(255, 255, 255), thickness + 1);
+    cv::putText(mat, message, position, fontFace, fontScale, color, thickness);
+}
+
+static void drawResults(cv::Mat &img, const cv::Mat &color_mask) {
+    img = img / 2 + color_mask / 2;
+}
+
+} // namespace vis
+
 namespace custom {
```

Review comment:
Probably we should thing how we can make stuff like this in graph -- where a desynchronized path meets the synchronized one, and results are accumulated inside as we do now manually.. Good idea for future versions
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo
**Review Line:** 43

**Code Changes:**
```diff
+    { 0, 64, 0 },
+    { 0, 64, 128 },
+    { 0, 192, 0 },
+    { 0, 192, 128 },
+    { 128, 64, 0 }
 };
 
 namespace {
@@ -43,12 +50,23 @@ std::string get_weights_path(const std::string &model_path) {
 
     auto ext = model_path.substr(sz - EXT_LEN);
```

Review comment:
No problem, I'll keep old alignment
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo

**Code Changes:**
```diff
@@ -5,34 +5,41 @@
 #include <opencv2/gapi/operators.hpp>
 #include <opencv2/highgui.hpp>
 
+#include <opencv2/gapi/streaming/desync.hpp>
+#include <opencv2/gapi/streaming/format.hpp>
+
+#include <iomanip>
+
 const std::string keys =
```

Review comment:
It works not with all cameras. I propose to add note on required camera parameters to help message and the source file header.
**File:** modules/gapi/samples/semantic_segmentation.cpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo

**Code Changes:**
```diff
@@ -5,34 +5,41 @@
 #include <opencv2/gapi/operators.hpp>
 #include <opencv2/highgui.hpp>
 
+#include <opencv2/gapi/streaming/desync.hpp>
+#include <opencv2/gapi/streaming/format.hpp>
+
+#include <iomanip>
+
 const std::string keys =
```

Review comment:
Good point, I'd rather remove it then
**File:** modules/python/src2/cv2_convert.hpp
**Change Type:** modified
**Context:** PR #23766: G-API: Refine Semantic Segmentation Demo
**Review Line:** 274

**Code Changes:**
```diff
 bool pyopencv_to(PyObject *obj, std::map<K,V> &map, const ArgInfo& info)
 {
+    if (!obj || obj == Py_None)
+    {
+        return true;
+    }
+
     PyObject* py_key = nullptr;
     PyObject* py_value = nullptr;
     Py_ssize_t pos = 0;
```

Review comment:
I guess it's the common check that I missed. It's used for all other wrappers. The code below won't work without this check. ``` GAPI_EXPORTS_W void foo(const map<int, int> &map = {}); ```
**File:** modules/dnn/src/layers/cpu_kernels/convolution.hpp
**Change Type:** modified
**Context:** PR #23763: DNN: fix bug for X86 winograd

**Code Changes:**
```diff
@@ -33,36 +33,17 @@ typedef __fp16 float16_t; // Fix conflict between float16_t in arm_neon.h and fl
 #define CONV_NR_FP32 24
 #endif
 
-// Winograd Params
 enum {
     CONV_WINO_STEP=6,
     CONV_WINO_KSIZE=3,
-    CONV_WINO_SIZE=CONV_WINO_STEP+CONV_WINO_KSIZE-1, // 8
+    CONV_WINO_SIZE=CONV_WINO_STEP+CONV_WINO_KSIZE - 1, // 8
```

Review comment:
Ptr to structure with constants is overkill for me. I propose do the following: - remain const int for NEON and other non-Intel platforms. - for x86 branch use something like `static const int CONV_WINO_IBLOCK = (checkHardwareSupport(CPU_AVX) || checkHardwareSupport(CPU_AVX2)) 6 : 3;` It means that: - no code changes in compute part - no performance side effects for others - single instance of constant values, but not copy for each layer Also `useAVX`, `useAVX2` and others may be `static const` too.
**File:** modules/dnn/src/layers/cpu_kernels/convolution.hpp
**Change Type:** modified
**Context:** PR #23763: DNN: fix bug for X86 winograd

**Code Changes:**
```diff
@@ -33,36 +33,17 @@ typedef __fp16 float16_t; // Fix conflict between float16_t in arm_neon.h and fl
 #define CONV_NR_FP32 24
 #endif
 
-// Winograd Params
 enum {
     CONV_WINO_STEP=6,
     CONV_WINO_KSIZE=3,
-    CONV_WINO_SIZE=CONV_WINO_STEP+CONV_WINO_KSIZE-1, // 8
+    CONV_WINO_SIZE=CONV_WINO_STEP+CONV_WINO_KSIZE - 1, // 8
```

Review comment:
Got it, will update the patch today later.
**File:** modules/dnn/src/layers/cpu_kernels/conv_winograd_f63.cpp
**Change Type:** modified
**Context:** PR #23763: DNN: fix bug for X86 winograd

**Code Changes:**
```diff
@@ -31,7 +31,6 @@ void winofunc_BtXB_8x8_f32(const float* inptr, int inpstep,
 void winofunc_AtXA_8x8_f32(const float* inptr, int inpstep, float* bpptr, int bpstep, float* outptr, int outstep,
                           float bias, float minval, float maxval, bool ifMinMaxAct);
 
-
 int runWinograd63(InputArray _input, InputArray _fusedAddMat, OutputArray _output, const Ptr<FastConv>& conv,
                   int ntasks, float minval, float maxval, ActivationLayer* activ, bool ifMinMaxAct)
 {
@@ -51,6 +50,23 @@ int runWinograd63(InputArray _input, InputArray _fusedAddMat, OutputArray _outpu
     int pad_left = conv->pad_left;
```

Review comment:
it makes sense to use static, if they are class fields. In case if they are local variables static does not make sense. I propose just remove static from locals.
**File:** modules/dnn/src/layers/cpu_kernels/conv_winograd_f63.cpp
**Change Type:** modified
**Context:** PR #23763: DNN: fix bug for X86 winograd
**Review Line:** 417

**Code Changes:**
```diff
@@ -398,7 +414,7 @@ void winofunc_accum_f32(const float* inwptr, const float* wptr, float* outbuf, i
 void winofunc_BtXB_8x8_f32(const float* inptr, int inpstep,
                           float* outptr, int Cg, const int winoIblock, const int winoAtomF32)
 {
-    CV_Assert(CONV_WINO_IBLOCK == 3 && CONV_WINO_KBLOCK == 4 && CONV_WINO_ATOM_F32 == 4);
+    CV_Assert(winoIblock == 3 && winoAtomF32 == 4);
     v_float32x4 x00 = v_load(inptr), x01 = v_load(inptr + 4);
     v_float32x4 x10 = v_load(inptr + inpstep), x11 = v_load(inptr + inpstep + 4);
     v_float32x4 x20 = v_load(inptr + inpstep*2), x21 = v_load(inptr + inpstep*2 + 4);
@@ -573,7 +589,6 @@ void winofunc_AtXA_8x8_f32(const float* inptr, int inpstep,
                           float* bpptr, int bpstep, float* outptr, int outstep,
```

Review comment:
Why do you need function parameters, if they always should have the same value? They should be local constants like `const int winoIblock = 3;`