nareshmlx/opencv-pr huggingface dataset:
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
What order of returned points? Is it well defined? ```.diff -transform +corners ```
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
done, changed EXPECT_NEAR
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
done, added "else"
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
done, added check zero image (256x256)
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
done, renamed "transform" and location points in a specific order
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
This still doesn't work. Just rename/remove some entry in your config and try again.
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
Why we should check "zero" image multiple times? You should check the passed image instead.
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
Now the situation is handled when there is no picture in the json file list
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #11921: Detect QRCode (Update) - Along with this algorithm there are related data in opencv_extra: PR link: [https://github.com/opencv/opencv_extra...

**Code Changes:**
```diff
@@ -1,74 +1,115 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
```

Review comment:
left just checking for QR code
**File:** modules/core/include/opencv2/core/types.hpp
**Change Type:** modified
**Context:** PR #11899: Add missing constructors and operator= - resolves #11898 Add missing constructors and assignment operators to Complex, Point2, Point3, Size...
**Review Line:** 171

**Code Changes:**
```diff
+    Point_(Point_&& pt) noexcept;
     Point_(const Size_<_Tp>& sz);
     Point_(const Vec<_Tp, 2>& v);
 
     Point_& operator = (const Point_& pt);
+    Point_& operator = (Point_&& pt) noexcept;
     //! conversion to another data type
     template<typename _Tp2> operator Point_<_Tp2>() const;
 
@@ -243,10 +245,12 @@ template<typename _Tp> class Point3_
     Point3_();
```

Review comment:
Do we need overload with `const Point_&&`? Are there any benefits for std containers from that? Should we replace this one with const? Same questions are for constructor.
**File:** modules/core/include/opencv2/core/types.hpp
**Change Type:** modified
**Context:** PR #11899: Add missing constructors and operator= - resolves #11898 Add missing constructors and assignment operators to Complex, Point2, Point3, Size...
**Review Line:** 171

**Code Changes:**
```diff
+    Point_(Point_&& pt) noexcept;
     Point_(const Size_<_Tp>& sz);
     Point_(const Vec<_Tp, 2>& v);
 
     Point_& operator = (const Point_& pt);
+    Point_& operator = (Point_&& pt) noexcept;
     //! conversion to another data type
     template<typename _Tp2> operator Point_<_Tp2>() const;
 
@@ -243,10 +245,12 @@ template<typename _Tp> class Point3_
     Point3_();
```

Review comment:
Although const rvalue reference exist, I've yet to see them in practical examples. I don't think containers take advantage of them.
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** added
**Context:** PR #11829: Detect QR Code
**Review Line:** 53

**Code Changes:**
```diff
+    String root = cvtest::TS::ptr()->get_data_path() + "qrcode/";
+    // String cascades[] =
+    // {
+        // root + "haarcascade_frontalface_alt.xml",
+        // root + "lbpcascade_frontalface.xml",
+        // String()
+    // };
+
+    // vector<Rect> objects;
+    // RNG rng((uint64)-1);
+
```

Review comment:
What is this?
**File:** modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
**Change Type:** modified
**Context:** PR #11762: update convolution opencl kernels in dnn module - update convolution kernel cache config, cleanup the idlf kernel and extend tuning paramet...

**Code Changes:**
```diff
@@ -55,6 +55,7 @@
 #include "../include/math_functions.hpp"
 #include "../include/default_kernel_config.hpp"
 #include "opencv2/dnn/shape_utils.hpp"
+#include "opencv2/core/utils/logger.hpp"
 
 #if defined WIN32 || defined _WIN32
 #include <windows.h>
@@ -87,10 +88,13 @@ static void initializeGlobalBuiltinConfigurations(const std::string& cache_path)
 {
```

Review comment:
These config numbers for Intel devices only. `ocl::Device::getDefault()` can point to any OpenCL device, including AMD / NVIDIA. Did you observe name changing in some Intel OpenCL runtime (platform / version)?
**File:** modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
**Change Type:** modified
**Context:** PR #11762: update convolution opencl kernels in dnn module - update convolution kernel cache config, cleanup the idlf kernel and extend tuning paramet...

**Code Changes:**
```diff
@@ -55,6 +55,7 @@
 #include "../include/math_functions.hpp"
 #include "../include/default_kernel_config.hpp"
 #include "opencv2/dnn/shape_utils.hpp"
+#include "opencv2/core/utils/logger.hpp"
 
 #if defined WIN32 || defined _WIN32
 #include <windows.h>
@@ -87,10 +88,13 @@ static void initializeGlobalBuiltinConfigurations(const std::string& cache_path)
 {
```

Review comment:
Please use `CV_LOG_INFO(NULL, ...)` from "opencv2/core/utils/logger.hpp". Same note for `dbgPrint()` above.
**File:** modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
**Change Type:** modified
**Context:** PR #11762: update convolution opencl kernels in dnn module - update convolution kernel cache config, cleanup the idlf kernel and extend tuning paramet...

**Code Changes:**
```diff
@@ -55,6 +55,7 @@
 #include "../include/math_functions.hpp"
 #include "../include/default_kernel_config.hpp"
 #include "opencv2/dnn/shape_utils.hpp"
+#include "opencv2/core/utils/logger.hpp"
 
 #if defined WIN32 || defined _WIN32
 #include <windows.h>
@@ -87,10 +88,13 @@ static void initializeGlobalBuiltinConfigurations(const std::string& cache_path)
 {
```

Review comment:
replaced dbgPrint with CV_LOG_INFO
**File:** modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
**Change Type:** modified
**Context:** PR #11762: update convolution opencl kernels in dnn module - update convolution kernel cache config, cleanup the idlf kernel and extend tuning paramet...

**Code Changes:**
```diff
@@ -55,6 +55,7 @@
 #include "../include/math_functions.hpp"
 #include "../include/default_kernel_config.hpp"
 #include "opencv2/dnn/shape_utils.hpp"
+#include "opencv2/core/utils/logger.hpp"
 
 #if defined WIN32 || defined _WIN32
 #include <windows.h>
@@ -87,10 +88,13 @@ static void initializeGlobalBuiltinConfigurations(const std::string& cache_path)
 {
```

Review comment:
I just thought "intel" is the default vendor here, but it looks not the case for other users. changed back to old string.
**File:** modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp
**Change Type:** modified
**Context:** PR #11762: update convolution opencl kernels in dnn module - update convolution kernel cache config, cleanup the idlf kernel and extend tuning paramet...

**Code Changes:**
```diff
@@ -55,6 +55,7 @@
 #include "../include/math_functions.hpp"
 #include "../include/default_kernel_config.hpp"
 #include "opencv2/dnn/shape_utils.hpp"
+#include "opencv2/core/utils/logger.hpp"
 
 #if defined WIN32 || defined _WIN32
 #include <windows.h>
@@ -87,10 +88,13 @@ static void initializeGlobalBuiltinConfigurations(const std::string& cache_path)
 {
```

Review comment:
`defaultConfigLoaded` is global variable. So both configs should be initialized at once.
**File:** modules/videoio/src/cap_msmf.cpp
**Change Type:** modified
**Context:** PR #11768: videoio: MSMF async reader for camera stream - Synchronized reading from camera with heavy frame processing provides bad effects (huge fram...
**Review Line:** 1059

**Code Changes:**
```diff
+    else if (dwResult != WAIT_OBJECT_0)
+    {
+        return HRESULT_FROM_WIN32(GetLastError());
+    }
+
+    if (!bEOS)
+    {
+        cv::AutoLock lock(m_mutex);
+        bEOS = m_bEOS;
+        if (!bEOS)
+        {
```

Review comment:
It looks like this check will always be true
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
1. CV_Error is "no return" call. "return 0" is dead code. Remove that 2. throwException is true for readCamerasParams(). Logically it should not fail to here (because it should thrown an exception).
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
Why is error handler removed?
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
> openni::OpenNI::shutdown(); How does it work with multiple VideoCapture instances? IMHO, any system/library-wide shutdown calls must be avoided.
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
> i < CV_MAX_NUM_STREAMS It is `std::vector<>` now. So it is better to use .size() method instead of some "OpenCV" constant.
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
Does this comment still actual?
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
1. Remove unnecessary `cv::format()` 2. Remove unnecessary `\n`
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
Calling destroy() after CV_Error is just wrong.
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
In fact, the only case we need to get camera params (baseline and focal lenght) is when generating disparity from depth map. Now I've fixed this, these params are read at disparity retrieving only.
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
Fixed (but no guarantee that this will work with multiple cameras since OpenNI's Kinect drivers don't support it)
**File:** modules/videoio/src/cap_openni2.cpp
**Change Type:** modified
**Context:** PR #11794: Kinect2 support added to OpenNI2 backend - ### This pullrequest changes * added support for Kinect 2 drivers (`libfreenect2` and `kinect2` ...

**Code Changes:**
```diff
@@ -70,6 +70,35 @@
 #include "PS1080.h"
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static cv::Mutex initOpenNI2Mutex;
+
+struct OpenNI2Initializer
+{
+public:
```

Review comment:
I don't know about Xn and PrimeSense devices but OpenNI itself and its Kinect 2 drivers support a lot of resolutions This comment is removed
**File:** modules/video/src/lkpyramid.cpp
**Change Type:** modified
**Context:** PR #10569: Pass RANSAC parameters as function input -  ### This pullrequest changes This pull request changes estimateRigidTransform so it takes as in...

**Code Changes:**
```diff
@@ -1412,7 +1412,7 @@ namespace cv
 {
 
 static void
-getRTMatrix( const Point2f* a, const Point2f* b,
+getRTMatrix( const std::vector<Point2f> a, const std::vector<Point2f> b,
              int count, Mat& M, bool fullAffine )
 {
     CV_Assert( M.isContinuous() );
@@ -1488,16 +1488,19 @@ getRTMatrix( const Point2f* a, const Point2f* b,
```

Review comment:
`std::vector<Point2f> a(RANSAC_SIZE0);` may be better, since it abstracts away new/delete.
**File:** modules/video/src/lkpyramid.cpp
**Change Type:** modified
**Context:** PR #10569: Pass RANSAC parameters as function input -  ### This pullrequest changes This pull request changes estimateRigidTransform so it takes as in...

**Code Changes:**
```diff
@@ -1412,7 +1412,7 @@ namespace cv
 {
 
 static void
-getRTMatrix( const Point2f* a, const Point2f* b,
+getRTMatrix( const std::vector<Point2f> a, const std::vector<Point2f> b,
              int count, Mat& M, bool fullAffine )
 {
     CV_Assert( M.isContinuous() );
@@ -1488,16 +1488,19 @@ getRTMatrix( const Point2f* a, const Point2f* b,
```

Review comment:
I agree; also, those vectors should better be placed outside of the loop.
**File:** modules/video/include/opencv2/video/tracking.hpp
**Change Type:** modified
**Context:** PR #10569: Pass RANSAC parameters as function input -  ### This pullrequest changes This pull request changes estimateRigidTransform so it takes as in...

**Code Changes:**
```diff
@@ -250,7 +250,9 @@ when fullAffine=false.
 @sa
 estimateAffine2D, estimateAffinePartial2D, getAffineTransform, getPerspectiveTransform, findHomography
  */
-CV_EXPORTS_W Mat estimateRigidTransform( InputArray src, InputArray dst, bool fullAffine );
+CV_EXPORTS_W Mat estimateRigidTransform( InputArray src, InputArray dst, bool fullAffine);
+CV_EXPORTS_W Mat estimateRigidTransform( InputArray src, InputArray dst, bool fullAffine, int ransacMaxIters, double ransacGoodRatio,
+                                         int ransacSize0);
 
 
```

Review comment:
1. In OpenCV 3.x we preserve binary compatibility. So you need to add another function with those extra parameters. 2. the parameters should use mixed case names, not all-capital names that are normally used for constants.
**File:** modules/video/src/lkpyramid.cpp
**Change Type:** modified
**Context:** PR #10569: Pass RANSAC parameters as function input -  ### This pullrequest changes This pull request changes estimateRigidTransform so it takes as in...
**Review Line:** 1498

**Code Changes:**
```diff
+}
+
+cv::Mat cv::estimateRigidTransform( InputArray src1, InputArray src2, bool fullAffine, int ransacMaxIters, double ransacGoodRatio,
+                                    const int ransacSize0)
 {
     CV_INSTRUMENT_REGION()
 
     Mat M(2, 3, CV_64F), A = src1.getMat(), B = src2.getMat();
 
     const int COUNT = 15;
     const int WIDTH = 160, HEIGHT = 120;
```

Review comment:
Since you now pass parameters instead of using constants, there should be some code added to check the parameters for reasonable value ranges. For example, RANSAC_SIZE0 should not be smaller than 3
**File:** samples/cpp/ela.cpp
**Change Type:** added
**Context:** PR #11819: Include ELA example -  ### This pullrequest changes  This example performs an Error Level Analysis in the image provided using the same tec...

**Code Changes:**
```diff
@@ -0,0 +1,79 @@
+/**
+  @file ela.cpp
+  @author Alessandro de Oliveira Faria (A.K.A. CABELO)
+  @brief Error Level Analysis (ELA) permits identifying areas within an image that are at different compression levels. With JPEG images, the entire picture should be at roughly the same level. If a section of the image is at a significantly different error level, then it likely indicates a digital modification. This example allows to see visually the changes made in a JPG image based in it's compression error analysis. Questions and suggestions email to: Alessandro de Oliveira Faria cabelo[at]opensuse[dot]org or OpenCV Team.
+  @date Jun 24, 2018
+*/
+
+#include <opencv2/highgui/highgui.hpp>
+#include <iostream>
```

Review comment:
since you already put `using namespace cv`, please, remove all `cv::`. I would also change the window title to something like `diff between the original and compressed images`