nareshmlx/opencv-pr huggingface dataset:
**File:** modules/gapi/include/opencv2/gapi/gkernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -415,6 +415,20 @@ namespace std
 
 namespace cv {
 namespace gapi {
+    class GFunctor
+    {
+    public:
+        virtual cv::GKernelImpl impl()       const = 0;
+        virtual cv::gapi::GBackend backend() const = 0;
+        const char* id()                     const { return m_id; }
```

Review comment:
`const GFunctor&`
**File:** modules/gapi/test/gapi_sample_pipelines.cpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -11,6 +11,8 @@
 #include <ade/util/iota_range.hpp>
 #include "logger.hpp"
 
+#include <opencv2/gapi/core.hpp>
+
 namespace opencv_test
 {
 
@@ -42,6 +44,11 @@ namespace
```

Review comment:
Of course, I plan to add more tests in future
**File:** modules/gapi/test/gapi_sample_pipelines.cpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -11,6 +11,8 @@
 #include <ade/util/iota_range.hpp>
 #include "logger.hpp"
 
+#include <opencv2/gapi/core.hpp>
+
 namespace opencv_test
 {
 
@@ -42,6 +44,11 @@ namespace
```

Review comment:
`dtype` isn't used
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...
**Review Line:** 267

**Code Changes:**
```diff
+
+        template<typename... Outputs>
+        static void call(Impl& impl, Inputs&&... ins, Outputs&&... outs)
+        {
+            impl(std::forward<Inputs>(ins)..., outs...);
+        }
     };
 
     template<int... IIs, int... OIs>
@@ -259,7 +276,17 @@ struct OCVCallHelper<Impl, std::tuple<Ins...>, std::tuple<Outs...> >
         //them to parameters of ad-hoc function
```

Review comment:
Not sure if `Impl` is the right type here - since we assume it has also `::run` method in the `call()` above. Yes, with templates that thing won't even be instantiated and compile well but still this `Impl` and that `Impl` are different `Impl`s
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -72,6 +72,17 @@ namespace cpu
      */
     GAPI_EXPORTS cv::gapi::GBackend backend();
     /** @} */
+
+    class GOCVFunctor;
+
+    //! @cond IGNORED
+    template<typename K, typename Callable>
+    GOCVFunctor ocv_kernel(const Callable& c);
```

Review comment:
it still can be `call()` but overloaded with extra parameter, right?
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -72,6 +72,17 @@ namespace cpu
      */
     GAPI_EXPORTS cv::gapi::GBackend backend();
     /** @} */
+
+    class GOCVFunctor;
+
+    //! @cond IGNORED
+    template<typename K, typename Callable>
+    GOCVFunctor ocv_kernel(const Callable& c);
```

Review comment:
Also comments would be very helpful here
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -72,6 +72,17 @@ namespace cpu
      */
     GAPI_EXPORTS cv::gapi::GBackend backend();
     /** @} */
+
+    class GOCVFunctor;
+
+    //! @cond IGNORED
+    template<typename K, typename Callable>
+    GOCVFunctor ocv_kernel(const Callable& c);
```

Review comment:
let it be `cv::gapi::ocv_kernel<> {}`
**File:** modules/gapi/include/opencv2/gapi/gkernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...
**Review Line:** 672

**Code Changes:**
```diff
@@ -650,6 +668,15 @@ namespace gapi {
         return pkg;
     };
 
+    template<typename... FF>
+    GKernelPackage kernels(FF&... functors)
+    {
+        GKernelPackage pkg;
+        int unused[] = { 0, (pkg.include(functors), 0)... };
+        cv::util::suppress_unused_warning(unused);
+        return pkg;
```

Review comment:
What about `kernels<Ts...>(Fs...)`? Would it look uglier from the user perspective?
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -72,6 +72,17 @@ namespace cpu
      */
     GAPI_EXPORTS cv::gapi::GBackend backend();
     /** @} */
+
+    class GOCVFunctor;
+
+    //! @cond IGNORED
+    template<typename K, typename Callable>
+    GOCVFunctor ocv_kernel(const Callable& c);
```

Review comment:
It seems impossible which of the two functions will be selected in this case ? ``` GCPUKernel(&P::call)```
**File:** modules/gapi/include/opencv2/gapi/gkernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...
**Review Line:** 672

**Code Changes:**
```diff
@@ -650,6 +668,15 @@ namespace gapi {
         return pkg;
     };
 
+    template<typename... FF>
+    GKernelPackage kernels(FF&... functors)
+    {
+        GKernelPackage pkg;
+        int unused[] = { 0, (pkg.include(functors), 0)... };
+        cv::util::suppress_unused_warning(unused);
+        return pkg;
```

Review comment:
I think it isn't necessary now
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -72,6 +72,17 @@ namespace cpu
      */
     GAPI_EXPORTS cv::gapi::GBackend backend();
     /** @} */
+
+    class GOCVFunctor;
+
+    //! @cond IGNORED
+    template<typename K, typename Callable>
+    GOCVFunctor ocv_kernel(const Callable& c);
```

Review comment:
This line is way too long
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...
**Review Line:** 357

**Code Changes:**
```diff
+template<typename K, typename Callable>
+gapi::cpu::GOCVFunctor gapi::cpu::ocv_kernel(const Callable& c)
+{
+    using P = detail::OCVCallHelper<Callable, typename K::InArgs, typename K::OutArgs>;
+    return GOCVFunctor(K::id(), std::bind(&P::callFunctor, std::placeholders::_1, c));
+}
+//! @endcond
+
 } // namespace cv
 
 #endif // OPENCV_GAPI_GCPUKERNEL_HPP
```

Review comment:
What's the reason to have two overloads for ocv_kernel here?
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...

**Code Changes:**
```diff
@@ -72,6 +72,17 @@ namespace cpu
      */
     GAPI_EXPORTS cv::gapi::GBackend backend();
     /** @} */
+
+    class GOCVFunctor;
+
+    //! @cond IGNORED
+    template<typename K, typename Callable>
+    GOCVFunctor ocv_kernel(const Callable& c);
```

Review comment:
ok it makes sense, but still please add comments
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...
**Review Line:** 357

**Code Changes:**
```diff
+template<typename K, typename Callable>
+gapi::cpu::GOCVFunctor gapi::cpu::ocv_kernel(const Callable& c)
+{
+    using P = detail::OCVCallHelper<Callable, typename K::InArgs, typename K::OutArgs>;
+    return GOCVFunctor(K::id(), std::bind(&P::callFunctor, std::placeholders::_1, c));
+}
+//! @endcond
+
 } // namespace cv
 
 #endif // OPENCV_GAPI_GCPUKERNEL_HPP
```

Review comment:
`Callable&` for functors with state we have to avoid copying `const Callable&` for lambdas Different in `std::bind` function, for functors using `std::ref` to avoid copying, for lambdas not. Will be great if we can using universal ref `Callable&&` here, but I don't know how to use perfect forwarding here
**File:** modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...
**Review Line:** 267

**Code Changes:**
```diff
+
+        template<typename... Outputs>
+        static void call(Impl& impl, Inputs&&... ins, Outputs&&... outs)
+        {
+            impl(std::forward<Inputs>(ins)..., outs...);
+        }
     };
 
     template<int... IIs, int... OIs>
@@ -259,7 +276,17 @@ struct OCVCallHelper<Impl, std::tuple<Ins...>, std::tuple<Outs...> >
         //them to parameters of ad-hoc function
```

Review comment:
But I can't use template for recognize object type for `callFunctor` because I can't to pass template function to `std::bind`. Of course I can make a wrapper.
**File:** modules/gapi/test/gapi_sample_pipelines.cpp
**Change Type:** modified
**Context:** PR #16213: G-API: Using functors as kernel implementation -  ### This pullrequest changes ``` build_gapi_standalone:Linux x64=ade-0.1.1f build_gapi_st...
**Review Line:** 407

**Code Changes:**
```diff
+
+    EXPECT_EQ(0, cv::norm(out_mat, ref_mat));
+    EXPECT_TRUE(is_called);
+}
+
+struct AddImpl
+{
+    void operator()(const cv::Mat& in1, const cv::Mat& in2, int, cv::Mat& out)
+    {
+        out = in1 + in2;
+        is_called = true;
```

Review comment:
> AddImpl To avoid ODR issues anonymous namespace is required as wrapper for "local" test classes/structs with non-unique names.
**File:** apps/interactive-calibration/defaultConfig.xml
**Change Type:** modified
**Context:** PR #16445: fixed typo - # This pullrequest changes I fixed the following typo in opencv. - `lenght` -> `length` - `Lenght` -> `Length`
**Review Line:** 4

**Code Changes:**
```diff
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <opencv_storage>
 <charuco_dict>0</charuco_dict>
-<charuco_square_lenght>200</charuco_square_lenght>
+<charuco_square_length>200</charuco_square_length>
 <charuco_marker_size>100</charuco_marker_size>
 <calibration_step>1</calibration_step>
 <max_frames_num>30</max_frames_num>
```

Review comment:
not sure about changing a config file because it can lead to incompatibility issues
**File:** apps/interactive-calibration/defaultConfig.xml
**Change Type:** modified
**Context:** PR #16445: fixed typo - # This pullrequest changes I fixed the following typo in opencv. - `lenght` -> `length` - `Lenght` -> `Length`
**Review Line:** 4

**Code Changes:**
```diff
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <opencv_storage>
 <charuco_dict>0</charuco_dict>
-<charuco_square_lenght>200</charuco_square_lenght>
+<charuco_square_length>200</charuco_square_length>
 <charuco_marker_size>100</charuco_marker_size>
 <calibration_step>1</calibration_step>
 <max_frames_num>30</max_frames_num>
```

Review comment:
I believe this compatibility code can handle migration: ``` if (readFromNode(reader["charuco_square_lenght"], mCapParams.charucoSquareLength)) std::cout << "DEPRECATION: Parameter 'charuco_square_lenght' has been deprecated (typo). Use 'charuco_square_length' instead." << std::endl; readFromNode(reader["charuco_square_length"], mCapParams.charucoSquareLength); ```
**File:** modules/objdetect/test/test_qrcode.cpp
**Change Type:** modified
**Context:** PR #16491: fixed issue with Mat reshape in decodeMulti() - solved problem with incorrect processing of transformation points in method QRCodeDetector:...

**Code Changes:**
```diff
@@ -481,6 +481,26 @@ INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Close, testing::ValuesIn(qrcode_i
 INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Monitor, testing::ValuesIn(qrcode_images_monitor));
 INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Multi, testing::ValuesIn(qrcode_images_multiple));
 
+TEST(Objdetect_QRCode_decodeMulti, decode_regression_16491)
+{
+#ifdef HAVE_QUIRC
+    Mat zero_image = Mat::zeros(256, 256, CV_8UC1);
+    Point corners_[] = {Point(16, 16), Point(128, 16), Point(128, 128), Point(16, 128),
+                        Point(16, 16), Point(128, 16), Point(128, 128), Point(16, 128)};
```

Review comment:
C++11 is not allowed in OpenCV tests on 3.4 branch by default. Please use `Points corners_[] = {...};` array + `vector::assign()`
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
> PR with opencv_extra changes > test I believe `test` item should go first. `opencv_extra` should be mentioned as a place for new `testdata` (perhaps in the same item) ``` - [ ] There is test (required if code has been changed). - [ ] Updated testdata (if needed): https://github.com/opencv/opencv_extra/pull/000 ```
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
> well documented I would left this for "features" only. In case of bugs `git blame` + xref on PR/issue are enough. We really don't want to copy bug tracker into documentation.
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
Please add `<cut/>` line (for PR dashboard)
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
It should be changed to: I agree to contribute the patch under OpenCV (BSD) license: https://github.com/opencv/opencv/blob/master/LICENSE
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
should probably be changed to: The patch is submitted to the proper branch, 3.4 (bug fixes that are applicable both to 3.4 and master) or master (new functionality, bug fixes for the new functionality).
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```
**Review Line:** 8

**Code Changes:**
```diff
 
-<!-- Please describe what your pullrequest is changing -->
+- [ ] I agree to contribute to the project under OpenCV (BSD) License.
+- [ ] To the best of my knowledge, the proposed patch is not based on a code under GPL or other license that is incompatible with OpenCV
+- [ ] The PR is proposed to proper branch
+- [ ] There is reference to original bug report and related work
+- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
+      Patch to opencv_extra has the same branch name.
+- [ ] The feature is well documented and sample code can be built with the project CMake
```

Review comment:
=> "If the patch fixes a submitted bug, or implements a requested feature, the corresponding issue should be referenced"
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
=> "There is regression test if a new functionality is added"
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
=> "If the patch includes a new test(s) that needs new test data, there is a pull request to http://github.com/opencv/opencv_extra from the branch with the same name, that adds the data"
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
maybe not needed for now
**File:** .github/PULL_REQUEST_TEMPLATE.md
**Change Type:** modified
**Context:** PR #16442: Added PR readiness checklist - The PR adds checklist to pull request description template. <cut> ``` force_builders_only=Docs ```

**Code Changes:**
```diff
@@ -1,9 +1,11 @@
-<!-- Please use this line to close one or multiple issues when this pullrequest gets merged
-You can add another line right under the first one:
-resolves #1234
-resolves #1235
--->
+### Pull Request Readiness Checklist
 
-### This pullrequest changes
+See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
```

Review comment:
well-documented is too strong requirement, and quite subjective one. Probably, should be changed to "If a new API is added, there is documentation in the form of Doxygen-friendly comments"
**File:** modules/videoio/include/opencv2/videoio.hpp
**Change Type:** modified
**Context:** PR #16246: VideoIO classes refactoring - Changes: - Added `explicit` to `VideoCapture` constructors with 2 arguments, 1 of them has default value - Ap...
**Review Line:** 631

**Code Changes:**
```diff
@@ -628,7 +628,7 @@ class CV_EXPORTS_W VideoCapture
     implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW.
     @sa The list of supported API backends cv::VideoCaptureAPIs
     */
-    CV_WRAP VideoCapture(const String& filename, int apiPreference = CAP_ANY);
+    CV_WRAP explicit VideoCapture(const String& filename, int apiPreference = CAP_ANY);
 
     /** @overload
     @brief  Opens a camera for video capturing
@@ -640,7 +640,7 @@ class CV_EXPORTS_W VideoCapture
 
```

Review comment:
this is useful change
**File:** modules/videoio/include/opencv2/videoio.hpp
**Change Type:** modified
**Context:** PR #16246: VideoIO classes refactoring - Changes: - Added `explicit` to `VideoCapture` constructors with 2 arguments, 1 of them has default value - Ap...

**Code Changes:**
```diff
@@ -628,7 +628,7 @@ class CV_EXPORTS_W VideoCapture
     implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW.
     @sa The list of supported API backends cv::VideoCaptureAPIs
     */
-    CV_WRAP VideoCapture(const String& filename, int apiPreference = CAP_ANY);
+    CV_WRAP explicit VideoCapture(const String& filename, int apiPreference = CAP_ANY);
 
     /** @overload
     @brief  Opens a camera for video capturing
@@ -640,7 +640,7 @@ class CV_EXPORTS_W VideoCapture
```

Review comment:
no; please, undo it
**File:** modules/videoio/include/opencv2/videoio.hpp
**Change Type:** modified
**Context:** PR #16246: VideoIO classes refactoring - Changes: - Added `explicit` to `VideoCapture` constructors with 2 arguments, 1 of them has default value - Ap...

**Code Changes:**
```diff
@@ -628,7 +628,7 @@ class CV_EXPORTS_W VideoCapture
     implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW.
     @sa The list of supported API backends cv::VideoCaptureAPIs
     */
-    CV_WRAP VideoCapture(const String& filename, int apiPreference = CAP_ANY);
+    CV_WRAP explicit VideoCapture(const String& filename, int apiPreference = CAP_ANY);
 
     /** @overload
     @brief  Opens a camera for video capturing
@@ -640,7 +640,7 @@ class CV_EXPORTS_W VideoCapture
```

Review comment:
please, restore all the virtual. no reason to change it