nareshmlx/opencv-pr huggingface dataset:
**File:** modules/core/include/opencv2/core/cvstd.hpp
**Change Type:** modified
**Context:** PR #5388: disable String(int) ctor - **Contrib**: https://github.com/Itseez/opencv_contrib/pull/387 MSVC and GCC compilers interprets cv::String a(0) ...

**Code Changes:**
```diff
@@ -576,6 +576,8 @@ class CV_EXPORTS String
 
     char* allocate(size_t len); // len without trailing 0
     void deallocate();
+
+    String(int); // disabled and invalid. Catch invalid usages like, commandLineParser.has(0) problem
 };
 
 //! @} core_basic
```

Review comment:
why did you add the explicit comment? the `const char*` converting constructor should not be explicit and the two argument constructors can not be explicit.
**File:** modules/calib3d/src/fisheye.cpp
**Change Type:** modified
**Context:** PR #5392: Fix in fisheye calibrate function: issue #5389

**Code Changes:**
```diff
@@ -794,8 +794,42 @@ double cv::fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray
 
     if (K.needed()) cv::Mat(_K).convertTo(K, K.empty() ? CV_64FC1 : K.type());
     if (D.needed()) cv::Mat(finalParam.k).convertTo(D, D.empty() ? CV_64FC1 : D.type());
-    if (rvecs.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type());
-    if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type());
+
+    if (rvecs.needed())
+    {
+        if( rvecs.kind() == _InputArray::STD_VECTOR_MAT )
```

Review comment:
I think this also work with Mat and UMat, so you do not need to restrict it to STD_VECTOR. see #5351
**File:** modules/calib3d/src/fisheye.cpp
**Change Type:** modified
**Context:** PR #5392: Fix in fisheye calibrate function: issue #5389

**Code Changes:**
```diff
@@ -794,8 +794,42 @@ double cv::fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray
 
     if (K.needed()) cv::Mat(_K).convertTo(K, K.empty() ? CV_64FC1 : K.type());
     if (D.needed()) cv::Mat(finalParam.k).convertTo(D, D.empty() ? CV_64FC1 : D.type());
-    if (rvecs.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type());
-    if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type());
+
+    if (rvecs.needed())
+    {
+        if( rvecs.kind() == _InputArray::STD_VECTOR_MAT )
```

Review comment:
convertTo fails with segv trying to convert vector of cv:Vec to vector of cv::Mat. So we need to handle this case separately.
**File:** modules/calib3d/src/fisheye.cpp
**Change Type:** modified
**Context:** PR #5392: Fix in fisheye calibrate function: issue #5389

**Code Changes:**
```diff
@@ -794,8 +794,42 @@ double cv::fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray
 
     if (K.needed()) cv::Mat(_K).convertTo(K, K.empty() ? CV_64FC1 : K.type());
     if (D.needed()) cv::Mat(finalParam.k).convertTo(D, D.empty() ? CV_64FC1 : D.type());
-    if (rvecs.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type());
-    if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type());
+
+    if (rvecs.needed())
+    {
+        if( rvecs.kind() == _InputArray::STD_VECTOR_MAT )
```

Review comment:
yes, but you only need ``` cpp if(rvecs.kind() == STD_VECTOR_MAT) { // handle vec mat } else { // works for all other cases } ```
**File:** modules/calib3d/src/fisheye.cpp
**Change Type:** modified
**Context:** PR #5392: Fix in fisheye calibrate function: issue #5389

**Code Changes:**
```diff
@@ -794,8 +794,42 @@ double cv::fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray
 
     if (K.needed()) cv::Mat(_K).convertTo(K, K.empty() ? CV_64FC1 : K.type());
     if (D.needed()) cv::Mat(finalParam.k).convertTo(D, D.empty() ? CV_64FC1 : D.type());
-    if (rvecs.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type());
-    if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type());
+
+    if (rvecs.needed())
+    {
+        if( rvecs.kind() == _InputArray::STD_VECTOR_MAT )
```

Review comment:
it's not very good style. The function should not rely on the actual type of pre-allocated rvecs. The correct code would be: <pre>if(rvecs.kind() == _InputArray::STD_VECTOR_MAT) { ... } else { cv::Mat(omc).convertTo(rvecs, rvecs.fixedType() ? rvecs.type() : CV_64FC3); } </pre>
**File:** modules/calib3d/src/fisheye.cpp
**Change Type:** modified
**Context:** PR #5392: Fix in fisheye calibrate function: issue #5389

**Code Changes:**
```diff
@@ -794,8 +794,42 @@ double cv::fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArray
 
     if (K.needed()) cv::Mat(_K).convertTo(K, K.empty() ? CV_64FC1 : K.type());
     if (D.needed()) cv::Mat(finalParam.k).convertTo(D, D.empty() ? CV_64FC1 : D.type());
-    if (rvecs.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type());
-    if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type());
+
+    if (rvecs.needed())
+    {
+        if( rvecs.kind() == _InputArray::STD_VECTOR_MAT )
```

Review comment:
same problem
**File:** samples/gpu/multi.cpp
**Change Type:** modified
**Context:** PR #5607: Update multi.cpp
**Review Line:** 10

**Code Changes:**
```diff
@@ -7,7 +7,7 @@
 #endif
 
 #include <iostream>
-#include "cvconfig.h"
+#include "opencv2/cvconfig.h"
 #include "opencv2/core/core.hpp"
 #include "opencv2/cudaarithm.hpp"
 
```

Review comment:
Actually if you plan to adapt this sample to make it working again, I suggest you completely remove old C-API stuff and replace it by the C++ variant.
**File:** modules/imgproc/src/morph.cpp
**Change Type:** modified
**Context:** PR #5515: Hit And Miss morphological operation - Implementation of Hit And Miss morphological operation - Based on the code provided in this page: htt...

**Code Changes:**
```diff
@@ -1870,6 +1870,8 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
     _dst.create(src.size(), src.type());
     Mat dst = _dst.getMat();
 
+    Mat k1, k2, e1, e2;		//only for hit and miss op
+
     switch( op )
     {
     case MORPH_ERODE:
@@ -1905,6 +1907,24 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
```

Review comment:
why do you change `src` matrix?
**File:** modules/imgproc/src/morph.cpp
**Change Type:** modified
**Context:** PR #5515: Hit And Miss morphological operation - Implementation of Hit And Miss morphological operation - Based on the code provided in this page: htt...

**Code Changes:**
```diff
@@ -1870,6 +1870,8 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
     _dst.create(src.size(), src.type());
     Mat dst = _dst.getMat();
 
+    Mat k1, k2, e1, e2;		//only for hit and miss op
+
     switch( op )
     {
     case MORPH_ERODE:
@@ -1905,6 +1907,24 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
```

Review comment:
the condition is redundant, `src.type() == CV_8UC1` is enough.
**File:** modules/imgproc/src/morph.cpp
**Change Type:** modified
**Context:** PR #5515: Hit And Miss morphological operation - Implementation of Hit And Miss morphological operation - Based on the code provided in this page: htt...

**Code Changes:**
```diff
@@ -1870,6 +1870,8 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
     _dst.create(src.size(), src.type());
     Mat dst = _dst.getMat();
 
+    Mat k1, k2, e1, e2;		//only for hit and miss op
+
     switch( op )
     {
     case MORPH_ERODE:
@@ -1905,6 +1907,24 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
```

Review comment:
True, I will fix it
**File:** modules/imgproc/src/morph.cpp
**Change Type:** modified
**Context:** PR #5515: Hit And Miss morphological operation - Implementation of Hit And Miss morphological operation - Based on the code provided in this page: htt...

**Code Changes:**
```diff
@@ -1870,6 +1870,8 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
     _dst.create(src.size(), src.type());
     Mat dst = _dst.getMat();
 
+    Mat k1, k2, e1, e2;		//only for hit and miss op
+
     switch( op )
     {
     case MORPH_ERODE:
@@ -1905,6 +1907,24 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
```

Review comment:
Original author normalized `src` to easily compute its complement for the second erosion (`erode(1-src,...)`). Maybe not the most elegant solution, so I'll remove that normalization and use a `bitwise_not`
**File:** modules/highgui/src/window_QT.cpp
**Change Type:** modified
**Context:** PR #5543: Fix for #5495 : add setTrackbarMin
**Review Line:** 682

**Code Changes:**
```diff
+    if (minval >= 0)
+    {
+        QPointer<CvTrackbar> t = icvFindTrackBarByName(name_bar, window_name);
+        if (t)
+        {
+            int maxval = t->slider->getMaximum();
+            minval = (maxval<minval)?maxval:minval;
+            t->slider->setMinimum(minval);
+        }
+    }
+}
```

Review comment:
have you compiled this? there is no such call for QSlider
**File:** samples/cpp/tutorial_code/features2D/SURF_descriptor.cpp
**Change Type:** modified
**Context:** PR #5514: Made samples build independent from nonfree module
**Review Line:** 8

**Code Changes:**
```diff
@@ -4,12 +4,23 @@
  * @author A. Huaman
  */
 
+#include "opencv2/opencv_modules.hpp"
 #include <stdio.h>
-#include <iostream>
-#include "opencv2/core/core.hpp"
-#include "opencv2/features2d/features2d.hpp"
-#include "opencv2/highgui/highgui.hpp"
-#include "opencv2/nonfree/features2d.hpp"
```

Review comment:
`#include <iostream>` is lost
**File:** doc/py_tutorials/py_feature2d/py_brief/py_brief.markdown
**Change Type:** modified
**Context:** PR #5548: update python features2d tutorials - cv2.SIFT -> cv2.xfeatures2d.SIFT_create() and friends also mention contrib repo related issue: #5540
**Review Line:** 60

**Code Changes:**
```diff
 
 img = cv2.imread('simple.jpg',0)
 
-# Initiate STAR detector
-star = cv2.FeatureDetector_create("STAR")
+# Initiate FAST detector
+star = cv2.xfeatures2d.StarDetector_create()
 
 # Initiate BRIEF extractor
-brief = cv2.DescriptorExtractor_create("BRIEF")
+brief = cv2.BriefDescriptorExtractor_create()
```

Review comment:
You are initiating a STAR detector below but calling it a FAST detector?
**File:** doc/py_tutorials/py_feature2d/py_brief/py_brief.markdown
**Change Type:** modified
**Context:** PR #5548: update python features2d tutorials - cv2.SIFT -> cv2.xfeatures2d.SIFT_create() and friends also mention contrib repo related issue: #5540
**Review Line:** 60

**Code Changes:**
```diff
 
 img = cv2.imread('simple.jpg',0)
 
-# Initiate STAR detector
-star = cv2.FeatureDetector_create("STAR")
+# Initiate FAST detector
+star = cv2.xfeatures2d.StarDetector_create()
 
 # Initiate BRIEF extractor
-brief = cv2.DescriptorExtractor_create("BRIEF")
+brief = cv2.BriefDescriptorExtractor_create()
```

Review comment:
:D it is because you have an old version of the repo I think, because afaik I already changed that line in a previous one :P
**File:** doc/py_tutorials/py_feature2d/py_brief/py_brief.markdown
**Change Type:** modified
**Context:** PR #5548: update python features2d tutorials - cv2.SIFT -> cv2.xfeatures2d.SIFT_create() and friends also mention contrib repo related issue: #5540
**Review Line:** 60

**Code Changes:**
```diff
 
 img = cv2.imread('simple.jpg',0)
 
-# Initiate STAR detector
-star = cv2.FeatureDetector_create("STAR")
+# Initiate FAST detector
+star = cv2.xfeatures2d.StarDetector_create()
 
 # Initiate BRIEF extractor
-brief = cv2.DescriptorExtractor_create("BRIEF")
+brief = cv2.BriefDescriptorExtractor_create()
```

Review comment:
no, since STAR is in contrib, i thought of using fast instead, forgot to change comment back.
**File:** cmake/OpenCVPackaging.cmake
**Change Type:** modified
**Context:** PR #5494: Debian formatted copyright file for packages

**Code Changes:**
```diff
@@ -19,6 +19,7 @@ OpenCV makes it easy for businesses to utilize and modify the code.")
   set(CPACK_PACKAGE_VERSION_MINOR "${OPENCV_VERSION_MINOR}")
   set(CPACK_PACKAGE_VERSION_PATCH "${OPENCV_VERSION_PATCH}")
   set(CPACK_PACKAGE_VERSION "${OPENCV_VCSVERSION}")
+  set(OPENCV_DEBIAN_COPYRIGHT_FILE "")
 endif(NOT OPENCV_CUSTOM_PACKAGE_INFO)
 
 set(CPACK_STRIP_FILES 1)
@@ -192,7 +193,7 @@ if(CPACK_GENERATOR STREQUAL "DEB")
     set(DEBIAN_CHANGELOG_OUT_FILE    "${CMAKE_BINARY_DIR}/deb-packages-gen/${comp}/changelog.Debian")
```

Review comment:
It should be `${OPENCV_DEBIAN_COPYRIGHT_FILE}`.
**File:** modules/highgui/include/opencv2/highgui.hpp
**Change Type:** modified
**Context:** PR #5232: documentation patch - https://github.com/Itseez/opencv/pull/5121

**Code Changes:**
```diff
@@ -172,21 +172,23 @@ namespace cv
 //! @addtogroup highgui
 //! @{
 
-// Flags for namedWindow
-enum { WINDOW_NORMAL     = 0x00000000, // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
-       WINDOW_AUTOSIZE   = 0x00000001, // the user cannot resize the window, the size is constrainted by the image displayed
-       WINDOW_OPENGL     = 0x00001000, // window with opengl support
-
-       WINDOW_FULLSCREEN = 1,          // change the window to fullscreen
```

Review comment:
I think this list (lines 679 - 681) is not needed.
**File:** modules/imgproc/include/opencv2/imgproc.hpp
**Change Type:** modified
**Context:** PR #5232: documentation patch - https://github.com/Itseez/opencv/pull/5121

**Code Changes:**
```diff
@@ -1968,8 +1968,8 @@ If you want to decimate the image by factor of 2 in each direction, you can call
     // specify fx and fy and let the function compute the destination image size.
     resize(src, dst, Size(), 0.5, 0.5, interpolation);
 @endcode
-To shrink an image, it will generally look best with CV_INTER_AREA interpolation, whereas to
-enlarge an image, it will generally look best with CV_INTER_CUBIC (slow) or CV_INTER_LINEAR
+To shrink an image, it will generally look best with cv::INTER_AREA interpolation, whereas to
+enlarge an image, it will generally look best with cv::INTER_CUBIC (slow) or cv::INTER_LINEAR
 (faster but still looks OK).
 
```

Review comment:
Why didn't you add `cv::` prefix to enum values ( `INTER_LINEAR ==> cv::INTER_LINEAR`)? This modification would allow users jump to corresponding documentation.
**File:** modules/highgui/include/opencv2/highgui.hpp
**Change Type:** modified
**Context:** PR #5232: documentation patch - https://github.com/Itseez/opencv/pull/5121

**Code Changes:**
```diff
@@ -172,21 +172,23 @@ namespace cv
 //! @addtogroup highgui
 //! @{
 
-// Flags for namedWindow
-enum { WINDOW_NORMAL     = 0x00000000, // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
-       WINDOW_AUTOSIZE   = 0x00000001, // the user cannot resize the window, the size is constrainted by the image displayed
-       WINDOW_OPENGL     = 0x00001000, // window with opengl support
-
-       WINDOW_FULLSCREEN = 1,          // change the window to fullscreen
```

Review comment:
I'd suggest to use reference here: `cv::namedWindow` Same for other enums.
**File:** modules/highgui/include/opencv2/highgui.hpp
**Change Type:** modified
**Context:** PR #5232: documentation patch - https://github.com/Itseez/opencv/pull/5121
**Review Line:** 186

**Code Changes:**
```diff
-// Flags for set / getWindowProperty
-enum { WND_PROP_FULLSCREEN   = 0, // fullscreen property    (can be WINDOW_NORMAL or WINDOW_FULLSCREEN)
-       WND_PROP_AUTOSIZE     = 1, // autosize property      (can be WINDOW_NORMAL or WINDOW_AUTOSIZE)
-       WND_PROP_ASPECT_RATIO = 2, // window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO);
-       WND_PROP_OPENGL       = 3  // opengl support
+//! Flags for cv::setWindowProperty / cv::getWindowProperty
+enum WindowPropertyFlags {
+       WND_PROP_FULLSCREEN   = 0, //!< fullscreen property    (can be WINDOW_NORMAL or WINDOW_FULLSCREEN)
+       WND_PROP_AUTOSIZE     = 1, //!< autosize property      (can be WINDOW_NORMAL or WINDOW_AUTOSIZE)
+       WND_PROP_ASPECT_RATIO = 2, //!< window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO);
+       WND_PROP_OPENGL       = 3  //!< opengl support
```

Review comment:
also changed
**File:** modules/highgui/include/opencv2/highgui.hpp
**Change Type:** modified
**Context:** PR #5232: documentation patch - https://github.com/Itseez/opencv/pull/5121

**Code Changes:**
```diff
@@ -172,21 +172,23 @@ namespace cv
 //! @addtogroup highgui
 //! @{
 
-// Flags for namedWindow
-enum { WINDOW_NORMAL     = 0x00000000, // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
-       WINDOW_AUTOSIZE   = 0x00000001, // the user cannot resize the window, the size is constrainted by the image displayed
-       WINDOW_OPENGL     = 0x00001000, // window with opengl support
-
-       WINDOW_FULLSCREEN = 1,          // change the window to fullscreen
```

Review comment:
any better suggestion instead of "Qt font", "Qt font style" etc. http://pullrequest.opencv.org/buildbot/export/pr/5232/docs/d7/dfc/group__highgui.html#gad15c7adb377e778dc907c0e318be193e
**File:** modules/highgui/include/opencv2/highgui.hpp
**Change Type:** modified
**Context:** PR #5232: documentation patch - https://github.com/Itseez/opencv/pull/5121
**Review Line:** 218

**Code Changes:**
```diff
-        QT_FONT_DEMIBOLD        = 63, //QFont::DemiBold,
-        QT_FONT_BOLD            = 75, //QFont::Bold,
-        QT_FONT_BLACK           = 87  //QFont::Black
+//! Qt font weight
+enum QtFontWeights {
+        QT_FONT_LIGHT           = 25, //!< QFont::Light ( Weight of 25 )
+        QT_FONT_NORMAL          = 50, //!< QFont::Normal ( Weight of 50 )
+        QT_FONT_DEMIBOLD        = 63, //!< QFont::DemiBold ( Weight of 63 )
+        QT_FONT_BOLD            = 75, //!< QFont::Bold ( Weight of 75 )
+        QT_FONT_BLACK           = 87  //!< QFont::Black ( Weight of 87 )
      };
```

Review comment:
as referenced by http://docs.opencv.org/modules/highgui/doc/qt_new_functions.html#fontqt i did. but not sure if it needed. maybe QFont::Light is enough
**File:** modules/highgui/include/opencv2/highgui.hpp
**Change Type:** modified
**Context:** PR #5232: documentation patch - https://github.com/Itseez/opencv/pull/5121

**Code Changes:**
```diff
@@ -172,21 +172,23 @@ namespace cv
 //! @addtogroup highgui
 //! @{
 
-// Flags for namedWindow
-enum { WINDOW_NORMAL     = 0x00000000, // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
-       WINDOW_AUTOSIZE   = 0x00000001, // the user cannot resize the window, the size is constrainted by the image displayed
-       WINDOW_OPENGL     = 0x00001000, // window with opengl support
-
-       WINDOW_FULLSCREEN = 1,          // change the window to fullscreen
```

Review comment:
I'd suggest `Qt font weight`
**File:** modules/contrib/doc/retina/index.rst
**Change Type:** modified
**Context:** PR #3834: Documentation update after iOS warnings fix in contrib/retina header

**Code Changes:**
```diff
@@ -293,7 +293,7 @@ Retina::write
 Retina::setupIPLMagnoChannel
 ++++++++++++++++++++++++++++
 
-.. ocv:function:: void Retina::setupIPLMagnoChannel(const bool normaliseOutput = true, const float parasolCells_beta = 0, const float parasolCells_tau = 0, const float parasolCells_k = 7, const float amacrinCellsTemporalCutFrequency = 1.2, const float V0CompressionParameter = 0.95, const float localAdaptintegration_tau = 0, const float localAdaptintegration_k = 7 )
+.. ocv:function:: void Retina::setupIPLMagnoChannel(const bool normaliseOutput = true, const float parasolCells_beta = 0, const float parasolCells_tau = 0, const float parasolCells_k = 7, const float amacrinCellsTemporalCutFrequency = 1.2f, const float V0CompressionParameter = 0.95f, const float localAdaptintegration_tau = 0, const float localAdaptintegration_k = 7 )
 
     Set parameters values for the Inner Plexiform Layer (IPL) magnocellular channel this channel processes signals output from OPL processing stage in peripheral vision, it allows motion information enhancement. It is decorrelated from the details channel. See reference papers for more details.
 
@@ -309,7 +309,7 @@ Retina::setupIPLMagnoChannel
```

Review comment:
As I see in PR #3697 - other initializers have been changed too: ``` .cpp photoreceptorsTemporalConstant=0.5f photoreceptorsSpatialConstant=0.53f ganglionCellsSensitivity=0.7f ```
**File:** modules/contrib/doc/retina/index.rst
**Change Type:** modified
**Context:** PR #3834: Documentation update after iOS warnings fix in contrib/retina header

**Code Changes:**
```diff
@@ -293,7 +293,7 @@ Retina::write
 Retina::setupIPLMagnoChannel
 ++++++++++++++++++++++++++++
 
-.. ocv:function:: void Retina::setupIPLMagnoChannel(const bool normaliseOutput = true, const float parasolCells_beta = 0, const float parasolCells_tau = 0, const float parasolCells_k = 7, const float amacrinCellsTemporalCutFrequency = 1.2, const float V0CompressionParameter = 0.95, const float localAdaptintegration_tau = 0, const float localAdaptintegration_k = 7 )
+.. ocv:function:: void Retina::setupIPLMagnoChannel(const bool normaliseOutput = true, const float parasolCells_beta = 0, const float parasolCells_tau = 0, const float parasolCells_k = 7, const float amacrinCellsTemporalCutFrequency = 1.2f, const float V0CompressionParameter = 0.95f, const float localAdaptintegration_tau = 0, const float localAdaptintegration_k = 7 )
 
     Set parameters values for the Inner Plexiform Layer (IPL) magnocellular channel this channel processes signals output from OPL processing stage in peripheral vision, it allows motion information enhancement. It is decorrelated from the details channel. See reference papers for more details.
 
@@ -309,7 +309,7 @@ Retina::setupIPLMagnoChannel
```

Review comment:
One more initializer has been changed in PR #3697: ``` .cpp V0CompressionParameter=0.95f ```
**File:** modules/core/include/opencv2/core/cvdef.h
**Change Type:** modified
**Context:** PR #3816: cvRound - compilation with O4T
**Review Line:** 506

**Code Changes:**
```diff
@@ -505,7 +503,9 @@ CV_INLINE int cvRound( double value )
 /** @overload */
 CV_INLINE int cvRound(float value)
 {
-#if CV_VFP && !defined HAVE_TEGRA_OPTIMIZATION
+#if defined ANDROID && (defined CV_ICC || defined __GNUC__) && defined HAVE_TEGRA_OPTIMIZATION
+    TEGRA_ROUND_FLT(value);
+#elif CV_VFP && !defined HAVE_TEGRA_OPTIMIZATION
     ARM_ROUND_FLT(value)
 #else
     return cvRound((double)value);
```

Review comment:
I think it would be better to replace this whole condition with `defined TEGRA_ROUND_FLT`. Let O4T itself figure out when to provide it. Ditto for the `double` version.
**File:** modules/core/include/opencv2/core/cvdef.h
**Change Type:** modified
**Context:** PR #3816: cvRound - compilation with O4T
**Review Line:** 508

**Code Changes:**
```diff
 CV_INLINE int cvRound(float value)
 {
-#if CV_VFP && !defined HAVE_TEGRA_OPTIMIZATION
+#if defined ANDROID && (defined CV_ICC || defined __GNUC__) && defined HAVE_TEGRA_OPTIMIZATION
+    TEGRA_ROUND_FLT(value);
+#elif CV_VFP && !defined HAVE_TEGRA_OPTIMIZATION
     ARM_ROUND_FLT(value)
 #else
     return cvRound((double)value);
```

Review comment:
Why the second half? If we do `HAVE_TEGRA_OPTIMIZATION`, but for whatever reason didn't use the O4T optimization of rounding, let's at least use the public optimization.
**File:** modules/core/include/opencv2/core/cvdef.h
**Change Type:** modified
**Context:** PR #3816: cvRound - compilation with O4T
**Review Line:** 508

**Code Changes:**
```diff
 CV_INLINE int cvRound(float value)
 {
-#if CV_VFP && !defined HAVE_TEGRA_OPTIMIZATION
+#if defined ANDROID && (defined CV_ICC || defined __GNUC__) && defined HAVE_TEGRA_OPTIMIZATION
+    TEGRA_ROUND_FLT(value);
+#elif CV_VFP && !defined HAVE_TEGRA_OPTIMIZATION
     ARM_ROUND_FLT(value)
 #else
     return cvRound((double)value);
```

Review comment:
I keep an original logic, that uses `cvRound(double)` in this case