nareshmlx/opencv-pr huggingface dataset:
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
Please use OpenCV logging if you plan to use it for further debugging.
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "test_precomp.hpp"
+#include "test_qr_utils.hpp"
 #include "opencv2/imgproc.hpp"
 
 namespace opencv_test { namespace {
@@ -33,6 +34,8 @@ std::string qrcode_images_multiple[] = {
   "5_qrcodes.png", "6_qrcodes.png", "7_qrcodes.png", "8_close_qrcodes.png"
```

Review comment:
Please use parameterized test.
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
Please use doxygen compatible notation for fields description.
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
I propose to presume only one constructor and define default parameters.
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
Bindings are missed.
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
ROI + setTo() may be done in one line.
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
Please add a comment what 6.5 and .70 means.
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
const ref for points
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
I support your suggestion, but removing the default constructor breaks CI. API compatibility checks fail.
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
added bindings
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
added new params
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "test_precomp.hpp"
+#include "test_qr_utils.hpp"
 #include "opencv2/imgproc.hpp"
 
 namespace opencv_test { namespace {
@@ -33,6 +34,8 @@ std::string qrcode_images_multiple[] = {
   "5_qrcodes.png", "6_qrcodes.png", "7_qrcodes.png", "8_close_qrcodes.png"
```

Review comment:
removed and added parameterized tests
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
`const &`
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
Please format description in Doxygen friendly format to get them in documentation. Also need to highlight that they related to Aruco-based solution only.
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
`ARUCO_BASED` is better. QR code is not pure Aruco.
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
`const &`
**File:** modules/objdetect/test/test_qr_utils.hpp
**Change Type:** added
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -0,0 +1,78 @@
+// 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.
+#include "test_precomp.hpp"
+
+namespace opencv_test {
+
+static inline
+void check_qr(const string& root, const string& name_current_image, const string& config_name,
```

Review comment:
Please use ` ts->printf` or OpenCV Logging. It works with Android logcat.
**File:** modules/objdetect/test/test_qr_utils.hpp
**Change Type:** added
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -0,0 +1,78 @@
+// 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.
+#include "test_precomp.hpp"
+
+namespace opencv_test {
+
+static inline
+void check_qr(const string& root, const string& name_current_image, const string& config_name,
```

Review comment:
`max_pixel_error` or `allowed_pixel_error` is better.
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "test_precomp.hpp"
+#include "test_qr_utils.hpp"
 #include "opencv2/imgproc.hpp"
 
 namespace opencv_test { namespace {
@@ -33,6 +34,8 @@ std::string qrcode_images_multiple[] = {
   "5_qrcodes.png", "6_qrcodes.png", "7_qrcodes.png", "8_close_qrcodes.png"
```

Review comment:
Please throw `SkipTestException` exception. The test will be listed in reports and be marked as sipped by Google test.
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "test_precomp.hpp"
+#include "test_qr_utils.hpp"
 #include "opencv2/imgproc.hpp"
 
 namespace opencv_test { namespace {
@@ -33,6 +34,8 @@ std::string qrcode_images_multiple[] = {
   "5_qrcodes.png", "6_qrcodes.png", "7_qrcodes.png", "8_close_qrcodes.png"
```

Review comment:
`disabled_samples` is more comprehensive.
**File:** modules/objdetect/perf/perf_qrcode_pipeline.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "perf_precomp.hpp"
+#include "../test/test_qr_utils.hpp"
 
 namespace opencv_test
 {
@@ -23,7 +24,9 @@ PERF_TEST_P_(Perf_Objdetect_QRCode, detect)
     std::vector< Point > corners;
```

Review comment:
`disabled_samples` is more comprehensive.
**File:** modules/objdetect/perf/perf_qrcode_pipeline.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "perf_precomp.hpp"
+#include "../test/test_qr_utils.hpp"
 
 namespace opencv_test
 {
@@ -23,7 +24,9 @@ PERF_TEST_P_(Perf_Objdetect_QRCode, detect)
     std::vector< Point > corners;
```

Review comment:
Throw skip too.
**File:** modules/objdetect/perf/perf_qrcode_pipeline.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "perf_precomp.hpp"
+#include "../test/test_qr_utils.hpp"
 
 namespace opencv_test
 {
@@ -23,7 +24,9 @@ PERF_TEST_P_(Perf_Objdetect_QRCode, detect)
     std::vector< Point > corners;
```

Review comment:
corners_result size is known. May be pre-allocated.
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
cosAngle = std::max(-1.f, cosAngle); cosAngle = std::min(1.f, cosAngle);
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
`relativeDiff`
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
Not clear comment.
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
What "total first color" means?
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
It's better to name "checkTimingPattern" or "matchTimingPattern".
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
rename to `getTimingPatternScore` Is this name appropriate?
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
renaming to `return total white+black modules in timing pattern, total white modules, penaltyPoints`
**File:** modules/objdetect/src/qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -949,34 +949,99 @@ vector<Point2f> QRDetect::getQuadrilateral(vector<Point2f> angle_list)
     return result_angle_list;
 }
 
+struct QRCodeDetectorBase::Impl {
+    virtual ~Impl() {}
+    virtual bool detect(InputArray img, OutputArray points) const = 0;
+    virtual std::string decode(InputArray img, InputArray points, OutputArray straight_qrcode) const = 0;
+    virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_qrcode) const = 0;
+    virtual bool detectMulti(InputArray img, OutputArray points) const = 0;
```

Review comment:
removed comment, the comment has lost its relevance.
**File:** modules/objdetect/perf/perf_qrcode_pipeline.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "perf_precomp.hpp"
+#include "../test/test_qr_utils.hpp"
 
 namespace opencv_test
 {
@@ -23,7 +24,9 @@ PERF_TEST_P_(Perf_Objdetect_QRCode, detect)
     std::vector< Point > corners;
```

Review comment:
fixed ``` vector<Point> corners_result(corners.size()); for (size_t i = 0ull; i < corners_result.size(); i++) { corners_result[i] = corners[i]; } ```
**File:** modules/objdetect/perf/perf_qrcode_pipeline.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "perf_precomp.hpp"
+#include "../test/test_qr_utils.hpp"
 
 namespace opencv_test
 {
@@ -23,7 +24,9 @@ PERF_TEST_P_(Perf_Objdetect_QRCode, detect)
     std::vector< Point > corners;
```

Review comment:
added `throw SkipTestException(name_current_image + " is disabled sample for method " + std::to_string((int)method));`
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "test_precomp.hpp"
+#include "test_qr_utils.hpp"
 #include "opencv2/imgproc.hpp"
 
 namespace opencv_test { namespace {
@@ -33,6 +34,8 @@ std::string qrcode_images_multiple[] = {
   "5_qrcodes.png", "6_qrcodes.png", "7_qrcodes.png", "8_close_qrcodes.png"
```

Review comment:
added `throw SkipTestException(name_current_image + " is disabled sample for method " + std::to_string((int)method));`
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
The maximum allowed relative rotation for finder patterns in the same QR code
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
what "module relative diff" means?
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
`module relative diff` is not clear.
**File:** modules/objdetect/include/opencv2/objdetect.hpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -45,6 +45,7 @@
 #define OPENCV_OBJDETECT_HPP
 
 #include "opencv2/core.hpp"
+#include "opencv2/objdetect/aruco_detector.hpp"
 
 /**
 @defgroup objdetect Object Detection
@@ -763,28 +764,15 @@ class CV_EXPORTS_W QRCodeEncoder {
 
```

Review comment:
Let's rename it to more comprehensive. Also python version does not have `QRDetectMethod::` prefix and looks unclear.
**File:** modules/objdetect/perf/perf_qrcode_pipeline.cpp
**Change Type:** modified
**Context:** PR #23264: Add detect qr with aruco

**Code Changes:**
```diff
@@ -3,6 +3,7 @@
 // of this distribution and at http://opencv.org/license.html.
 
 #include "perf_precomp.hpp"
+#include "../test/test_qr_utils.hpp"
 
 namespace opencv_test
 {
@@ -23,7 +24,9 @@ PERF_TEST_P_(Perf_Objdetect_QRCode, detect)
     std::vector< Point > corners;
```

Review comment:
it should be before test loop to reduce time. The disabled test is marked as skipped in xml report.