nareshmlx/opencv-pr huggingface dataset:
**File:** modules/dnn/src/layers/elementwise_layers.cpp
**Change Type:** modified
**Context:** PR #19620: Fixed several issues found by static analysis

**Code Changes:**
```diff
@@ -1408,29 +1408,24 @@ struct ExpFunctor : public BaseFunctor
 
     ExpFunctor(float base_ = -1.f, float scale_ = 1.f, float shift_ = 0.f)
         : base(base_), scale(scale_), shift(shift_)
-    {
-        CV_Check(base, base == -1.f || base > 0.f, "Unsupported 'base' value");
-    }
-
-    bool supportBackend(int backendId, int targetId)
-    {
```

Review comment:
Only `ExpLayer::create()` (below) knows about this class. Base class assumes "updates" through `tryFuse()` callback, but it is not implemented here. Perhaps even `finalize()` with empty body is not needed.
**File:** modules/dnn/src/layers/elementwise_layers.cpp
**Change Type:** modified
**Context:** PR #19620: Fixed several issues found by static analysis

**Code Changes:**
```diff
@@ -1408,29 +1408,24 @@ struct ExpFunctor : public BaseFunctor
 
     ExpFunctor(float base_ = -1.f, float scale_ = 1.f, float shift_ = 0.f)
         : base(base_), scale(scale_), shift(shift_)
-    {
-        CV_Check(base, base == -1.f || base > 0.f, "Unsupported 'base' value");
-    }
-
-    bool supportBackend(int backendId, int targetId)
-    {
```

Review comment:
Isn't it meant to be called here?https://github.com/opencv/opencv/blob/7328600a7a5e3a2a925c2581c9c5149a1ccc7065/modules/dnn/src/layers/elementwise_layers.cpp#L129-L132
**File:** modules/dnn/src/layers/elementwise_layers.cpp
**Change Type:** modified
**Context:** PR #19620: Fixed several issues found by static analysis

**Code Changes:**
```diff
@@ -1408,29 +1408,24 @@ struct ExpFunctor : public BaseFunctor
 
     ExpFunctor(float base_ = -1.f, float scale_ = 1.f, float shift_ = 0.f)
         : base(base_), scale(scale_), shift(shift_)
-    {
-        CV_Check(base, base == -1.f || base > 0.f, "Unsupported 'base' value");
-    }
-
-    bool supportBackend(int backendId, int targetId)
-    {
```

Review comment:
There is already empty implementation in the base class: https://github.com/opencv/opencv/blob/7328600a7a5e3a2a925c2581c9c5149a1ccc7065/modules/dnn/src/layers/elementwise_layers.cpp#L286
**File:** modules/imgcodecs/src/grfmt_exr.cpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -589,7 +589,45 @@ bool  ExrEncoder::write( const Mat& img, const std::vector<int>& params )
                 type = FLOAT;
                 break;
             default:
-                throw std::runtime_error( "IMWRITE_EXR_TYPE is invalid or not supported" );
+                CV_Error(Error::StsBadArg, "IMWRITE_EXR_TYPE is invalid or not supported");
+            }
+        }
+        if ( params[i] == IMWRITE_EXR_COMPRESSION )
+        {
```

Review comment:
indentation is 4 spaces in this file
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -6,6 +6,17 @@
 
 namespace opencv_test { namespace {
 
+size_t getFileSize(const string& filename)
+{
+    std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
+    if (ifs.is_open())
+    {
+        ifs.seekg(0, std::ios::end);
```

Review comment:
`_EQ` parameters order is `(expected, actual)` Here and below.
**File:** modules/imgcodecs/include/opencv2/imgcodecs.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -95,6 +95,7 @@ enum ImwriteFlags {
        IMWRITE_PNG_BILEVEL         = 18, //!< Binary level PNG, 0 or 1, default is 0.
        IMWRITE_PXM_BINARY          = 32, //!< For PPM, PGM, or PBM, it can be a binary format flag, 0 or 1. Default value is 1.
        IMWRITE_EXR_TYPE            = (3 << 4) + 0, /* 48 */ //!< override EXR storage type (FLOAT (FP32) is default)
+       IMWRITE_EXR_COMPRESSION     = (3 << 4) + 1, /* 49 */ //!< override EXR compression type (ZIP_COMPRESSION = 3 is default)
        IMWRITE_WEBP_QUALITY        = 64, //!< For WEBP, it can be a quality from 1 to 100 (the higher is the better). By default (without any parameter) and for quality above 100 the lossless compression is used.
        IMWRITE_PAM_TUPLETYPE       = 128,//!< For PAM, sets the TUPLETYPE field to the corresponding string value that is defined for the format
        IMWRITE_TIFF_RESUNIT = 256,//!< For TIFF, use to specify which DPI resolution unit to set; see libtiff documentation for valid values
@@ -110,6 +111,19 @@ enum ImwriteEXRTypeFlags {
        IMWRITE_EXR_TYPE_FLOAT = 2   //!< store as FP32 (default)
```

Review comment:
Need to fix indentation here too.
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -6,6 +6,17 @@
 
 namespace opencv_test { namespace {
 
+size_t getFileSize(const string& filename)
+{
+    std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
+    if (ifs.is_open())
+    {
+        ifs.seekg(0, std::ios::end);
```

Review comment:
> params Can't be used here. Test file is shared between tests. Use the same generation code for both tests (or it is better to move this code into dedicated function)
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -6,6 +6,17 @@
 
 namespace opencv_test { namespace {
 
+size_t getFileSize(const string& filename)
+{
+    std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
+    if (ifs.is_open())
+    {
+        ifs.seekg(0, std::ios::end);
```

Review comment:
Move variable declaration near its usage (line 150)
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options
**Review Line:** 38

**Code Changes:**
```diff
@@ -23,6 +34,8 @@ TEST(Imgcodecs_EXR, readWrite_32FC1)
     ASSERT_EQ(CV_32FC1,img.type());
 
     ASSERT_TRUE(cv::imwrite(filenameOutput, img));
+    // Check generated file size to ensure that it's compressed with proper options
+    ASSERT_EQ(396u, getFileSize(filenameOutput));
     const Mat img2 = cv::imread(filenameOutput, IMREAD_UNCHANGED);
     ASSERT_EQ(img2.type(), img.type());
     ASSERT_EQ(img2.size(), img.size());
@@ -113,5 +126,29 @@ TEST(Imgcodecs_EXR, readWrite_32FC3_half)
     EXPECT_EQ(0, remove(filenameOutput.c_str()));
```

Review comment:
Is there any compression applied by default?
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -6,6 +6,17 @@
 
 namespace opencv_test { namespace {
 
+size_t getFileSize(const string& filename)
+{
+    std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
+    if (ifs.is_open())
+    {
+        ifs.seekg(0, std::ios::end);
```

Review comment:
There is no PR with test data to extra. The test exploits existing EXR image. I propose to get rid of `ifdef` and always use the file. The file size check will not work for generated file too.
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -6,6 +6,17 @@
 
 namespace opencv_test { namespace {
 
+size_t getFileSize(const string& filename)
+{
+    std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
+    if (ifs.is_open())
+    {
+        ifs.seekg(0, std::ios::end);
```

Review comment:
It'a applicable, `ifdef` block has been deleted.
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options
**Review Line:** 38

**Code Changes:**
```diff
@@ -23,6 +34,8 @@ TEST(Imgcodecs_EXR, readWrite_32FC1)
     ASSERT_EQ(CV_32FC1,img.type());
 
     ASSERT_TRUE(cv::imwrite(filenameOutput, img));
+    // Check generated file size to ensure that it's compressed with proper options
+    ASSERT_EQ(396u, getFileSize(filenameOutput));
     const Mat img2 = cv::imread(filenameOutput, IMREAD_UNCHANGED);
     ASSERT_EQ(img2.type(), img.type());
     ASSERT_EQ(img2.size(), img.size());
@@ -113,5 +126,29 @@ TEST(Imgcodecs_EXR, readWrite_32FC3_half)
     EXPECT_EQ(0, remove(filenameOutput.c_str()));
```

Review comment:
`Compression = ZIP_COMPRESSION` is default for vendered instance of OpenEXR.
**File:** modules/imgcodecs/include/opencv2/imgcodecs.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options
**Review Line:** 125

**Code Changes:**
```diff
+       IMWRITE_EXR_COMPRESSION_PXR24 = 5, //!< lossy 24-bit float compression
+       IMWRITE_EXR_COMPRESSION_B44   = 6, //!< lossy 4-by-4 pixel block compression, fixed compression rate
+       IMWRITE_EXR_COMPRESSION_B44A  = 7, //!< lossy 4-by-4 pixel block compression, flat fields are compressed more
+       IMWRITE_EXR_COMPRESSION_DWAA  = 8, //!< lossy DCT based compression, in blocks of 32 scanlines. More efficient for partial buffer access.
+       IMWRITE_EXR_COMPRESSION_DWAB  = 9, //!< lossy DCT based compression, in blocks of 256 scanlines. More efficient space wise and faster to decode full frames than DWAA_COMPRESSION.
+     };
+
 //! Imwrite PNG specific flags used to tune the compression algorithm.
 /** These flags will be modify the way of PNG image compression and will be passed to the underlying zlib processing stage.
 
```

Review comment:
Please fix indentation here too.
**File:** modules/imgcodecs/test/test_exr.impl.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options

**Code Changes:**
```diff
@@ -6,6 +6,17 @@
 
 namespace opencv_test { namespace {
 
+size_t getFileSize(const string& filename)
+{
+    std::ifstream ifs(filename.c_str(), std::ios::in | std::ios::binary);
+    if (ifs.is_open())
+    {
+        ifs.seekg(0, std::ios::end);
```

Review comment:
Currently this file is generated by PR's author (of the previous test), using special build of tests (with defined `GENERATE_DATA`) and using of provided code (under the `#if` condition). We already have too many unknown files in opencv_extra, so lets do not make things worse by adding new "unknown" files. Also you can easily generate data for other test cases (like FP16) if necessary (instead of going somewhere to grab image data). Using "param" here is wrong anyway as we don't want to rewrite file with the new different content.
**File:** modules/imgcodecs/include/opencv2/imgcodecs.hpp
**Change Type:** modified
**Context:** PR #19540: OpenEXR compression options
**Review Line:** 125

**Code Changes:**
```diff
+       IMWRITE_EXR_COMPRESSION_PXR24 = 5, //!< lossy 24-bit float compression
+       IMWRITE_EXR_COMPRESSION_B44   = 6, //!< lossy 4-by-4 pixel block compression, fixed compression rate
+       IMWRITE_EXR_COMPRESSION_B44A  = 7, //!< lossy 4-by-4 pixel block compression, flat fields are compressed more
+       IMWRITE_EXR_COMPRESSION_DWAA  = 8, //!< lossy DCT based compression, in blocks of 32 scanlines. More efficient for partial buffer access.
+       IMWRITE_EXR_COMPRESSION_DWAB  = 9, //!< lossy DCT based compression, in blocks of 256 scanlines. More efficient space wise and faster to decode full frames than DWAA_COMPRESSION.
+     };
+
 //! Imwrite PNG specific flags used to tune the compression algorithm.
 /** These flags will be modify the way of PNG image compression and will be passed to the underlying zlib processing stage.
 
```

Review comment:
I aligned indentation with other enums in header. It's strange, but enum keys has 7 spaces indentation.
**File:** modules/dnn/test/test_darknet_importer.cpp
**Change Type:** modified
**Context:** PR #19474: TanH darknet and test
**Review Line:** 707

**Code Changes:**
```diff
     testDarknetLayer("mish", true);
 }
 
+TEST_P(Test_Darknet_layers, tanh)
+{
+    testDarknetLayer("tanh");
+}
+
 TEST_P(Test_Darknet_layers, avgpool_softmax)
 {
     testDarknetLayer("avgpool_softmax");
```

Review comment:
Hi, I have made the changes in the data. All 1 values might be because of large input numbers that I had taken for the test.
**File:** modules/calib3d/src/calibinit.cpp
**Change Type:** modified
**Context:** PR #19498: Properly handle empty centers in findCirclesGrid

**Code Changes:**
```diff
@@ -2274,7 +2274,7 @@ bool findCirclesGrid2(InputArray _image, Size patternSize,
         }
     }
 
-    if (!H.empty())  // undone rectification
+    if (!centers.empty() && !H.empty())  // undone rectification
     {
         Mat orgPointsMat;
         transform(centers, orgPointsMat, H.inv());
```

Review comment:
relates #19079 The problem is that [original code](https://github.com/opencv/opencv/blob/3.4.11/modules/calib3d/src/calibinit.cpp#L2283-L2284) returns [transformed](https://github.com/opencv/opencv/blob/3.4.11/modules/calib3d/src/calibinit.cpp#L2280) (rectified) corners for the "false" result too. Why do we need to return these rectified corners on detection failure? Please provide more details about observed issue. What error message did you get? BTW, you can see this corners problem by launching calib3d test with and without your patch: ``` ./bin/opencv_test_calib3d --gtest_filter=*regression_18713* --test_debug=10 ```
**File:** modules/calib3d/src/calibinit.cpp
**Change Type:** modified
**Context:** PR #19498: Properly handle empty centers in findCirclesGrid

**Code Changes:**
```diff
@@ -2274,7 +2274,7 @@ bool findCirclesGrid2(InputArray _image, Size patternSize,
         }
     }
 
-    if (!H.empty())  // undone rectification
+    if (!centers.empty() && !H.empty())  // undone rectification
     {
         Mat orgPointsMat;
         transform(centers, orgPointsMat, H.inv());
```

Review comment:
Perhaps I got this. Probably we should check for `corners.empty()` instead. Please capture `points` values (`std::cout << Mat(points) << std::endl`) which cause this error, so we can add regression test for that. (add `patternSize` / `flags` arguments values too)
**File:** modules/calib3d/src/calibinit.cpp
**Change Type:** modified
**Context:** PR #19498: Properly handle empty centers in findCirclesGrid

**Code Changes:**
```diff
@@ -2274,7 +2274,7 @@ bool findCirclesGrid2(InputArray _image, Size patternSize,
         }
     }
 
-    if (!H.empty())  // undone rectification
+    if (!centers.empty() && !H.empty())  // undone rectification
     {
         Mat orgPointsMat;
         transform(centers, orgPointsMat, H.inv());
```

Review comment:
![debug](https://user-images.githubusercontent.com/1621924/107726000-9c2ce380-6cb5-11eb-8005-560094d3364e.png) I figured `isValid` was equivalent to `!centers.empty()`, but I am happy to change this to check the centers directly. I attached the image which failed for reference. I believe the partial circle grid is what throws the logic off. I am new to the unit testing framework for OpenCV. What is the best way to add the test for detectors like this? Should I hardcode the image contents in the test? The `patternSize` is used was 13x8 and I used the default args for `flags` and `blobDetector`. Those are `CALIB_CB_SYMMETRIC_GRID` and `SimpleBlobDetector::create()` respectively
**File:** modules/calib3d/src/calibinit.cpp
**Change Type:** modified
**Context:** PR #19498: Properly handle empty centers in findCirclesGrid

**Code Changes:**
```diff
@@ -2274,7 +2274,7 @@ bool findCirclesGrid2(InputArray _image, Size patternSize,
         }
     }
 
-    if (!H.empty())  // undone rectification
+    if (!centers.empty() && !H.empty())  // undone rectification
     {
         Mat orgPointsMat;
         transform(centers, orgPointsMat, H.inv());
```

Review comment:
I just took a look at the `regression_18713` test. I port this issue to a similar test
**File:** modules/imgproc/include/opencv2/imgproc.hpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -1999,6 +1999,38 @@ CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
                                      InputArray mask, int blockSize,
                                      int gradientSize, bool useHarrisDetector = false,
                                      double k = 0.04 );
+
+/** @brief Same as above, but returns also quality measure of the detected corners.
+
+@param image Input 8-bit or floating-point 32-bit, single-channel image.
+@param corners Output vector of detected corners.
+@param maxCorners Maximum number of corners to return. If there are more corners than are found,
```

Review comment:
UB if we write at the noArray() -- static _InputOutputArray _none -- while someone is reading?
**File:** modules/imgproc/include/opencv2/imgproc.hpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -1999,6 +1999,38 @@ CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
                                      InputArray mask, int blockSize,
                                      int gradientSize, bool useHarrisDetector = false,
                                      double k = 0.04 );
+
+/** @brief Same as above, but returns also quality measure of the detected corners.
+
+@param image Input 8-bit or floating-point 32-bit, single-channel image.
+@param corners Output vector of detected corners.
+@param maxCorners Maximum number of corners to return. If there are more corners than are found,
```

Review comment:
Please add doc line for the function.
**File:** modules/imgproc/perf/opencl/perf_gftt.cpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -82,6 +82,35 @@ OCL_PERF_TEST_P(GoodFeaturesToTrackFixture, GoodFeaturesToTrack,
     SANITY_CHECK(dst);
 }
 
+OCL_PERF_TEST_P(GoodFeaturesToTrackFixture, GoodFeaturesToTrackWithQuality,
+                ::testing::Combine(OCL_PERF_ENUM(String("gpu/opticalflow/rubberwhale1.png")),
+                                   OCL_PERF_ENUM(3.0), Bool()))
+{
+    GoodFeaturesToTrackParams params = GetParam();
+    const String fileName = get<0>(params);
```

Review comment:
I propose to use absolute error 1e-6. It's small enough relatively to values and should cover floating computation issue on different OpenCL devices.
**File:** modules/imgproc/test/ocl/test_gftt.cpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -62,6 +62,7 @@ PARAM_TEST_CASE(GoodFeaturesToTrack, double, bool)
 
     TEST_DECLARE_INPUT_PARAMETER(src);
     UMat points, upoints;
+    std::vector<float> quality, uquality;
 
     virtual void SetUp()
     {
@@ -100,22 +101,25 @@ OCL_TEST_P(GoodFeaturesToTrack, Accuracy)
 
```

Review comment:
New condition increases amount of mismatches. I propose to tune Eps a little to pass original check.
**File:** modules/imgproc/test/test_goodfeaturetotrack.cpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -88,14 +88,13 @@ test_cornerEigenValsVecs( const Mat& src, Mat& eigenv, int block_size,
     cvtest::filter2D( src, dy2, ftype, kernel*kernel_scale, anchor, 0, borderType,borderValue );
 
     double denom = (1 << (aperture_size-1))*block_size;
-    denom = denom * denom;
 
     if( _aperture_size < 0 )
-        denom *= 4;
+        denom *= 2.;
     if(type != ftype )
```

Review comment:
Please remove dead code.
**File:** modules/imgproc/include/opencv2/imgproc.hpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -1999,6 +1999,38 @@ CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
                                      InputArray mask, int blockSize,
                                      int gradientSize, bool useHarrisDetector = false,
                                      double k = 0.04 );
+
+/** @brief Same as above, but returns also quality measure of the detected corners.
+
+@param image Input 8-bit or floating-point 32-bit, single-channel image.
+@param corners Output vector of detected corners.
+@param maxCorners Maximum number of corners to return. If there are more corners than are found,
```

Review comment:
Added check if writing is actuallly requested (seems the object does not allow write access by default anyway).
**File:** modules/imgproc/test/ocl/test_gftt.cpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -62,6 +62,7 @@ PARAM_TEST_CASE(GoodFeaturesToTrack, double, bool)
 
     TEST_DECLARE_INPUT_PARAMETER(src);
     UMat points, upoints;
+    std::vector<float> quality, uquality;
 
     virtual void SetUp()
     {
@@ -100,22 +101,25 @@ OCL_TEST_P(GoodFeaturesToTrack, Accuracy)
 
```

Review comment:
OK, tests pass with 3.f * FLT_EPSILON relative error threshold.
**File:** modules/imgproc/include/opencv2/imgproc.hpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -1999,6 +1999,38 @@ CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
                                      InputArray mask, int blockSize,
                                      int gradientSize, bool useHarrisDetector = false,
                                      double k = 0.04 );
+
+/** @brief Same as above, but returns also quality measure of the detected corners.
+
+@param image Input 8-bit or floating-point 32-bit, single-channel image.
+@param corners Output vector of detected corners.
+@param maxCorners Maximum number of corners to return. If there are more corners than are found,
```

Review comment:
Done (I have added doc line comments to the first of the two functions, as previously only one of the two goodFeaturesToTrack() versions was documented).
**File:** modules/imgproc/perf/opencl/perf_gftt.cpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -82,6 +82,35 @@ OCL_PERF_TEST_P(GoodFeaturesToTrackFixture, GoodFeaturesToTrack,
     SANITY_CHECK(dst);
 }
 
+OCL_PERF_TEST_P(GoodFeaturesToTrackFixture, GoodFeaturesToTrackWithQuality,
+                ::testing::Combine(OCL_PERF_ENUM(String("gpu/opticalflow/rubberwhale1.png")),
+                                   OCL_PERF_ENUM(3.0), Bool()))
+{
+    GoodFeaturesToTrackParams params = GetParam();
+    const String fileName = get<0>(params);
```

Review comment:
Switched the tests back to comparison by absolute error.
**File:** modules/imgproc/include/opencv2/imgproc.hpp
**Change Type:** modified
**Context:** PR #19392: goodFeaturesToTrack returns also corner value

**Code Changes:**
```diff
@@ -1999,6 +1999,38 @@ CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
                                      InputArray mask, int blockSize,
                                      int gradientSize, bool useHarrisDetector = false,
                                      double k = 0.04 );
+
+/** @brief Same as above, but returns also quality measure of the detected corners.
+
+@param image Input 8-bit or floating-point 32-bit, single-channel image.
+@param corners Output vector of detected corners.
+@param maxCorners Maximum number of corners to return. If there are more corners than are found,
```

Review comment:
Do not violate OpenCV arguments order: https://github.com/opencv/opencv/wiki/Coding_Style_Guide or make it optional. > input parameters, output parameters, flags and optional parameters. - required input arrays - required output arrays - required input flags / scalar / non-array parameters - optional input arrays (mask) - optional output arrays - optional input flags / scalar / non-array parameters