Merge pull request #18309 from TolyaTalamanov:at/wrap-apply-overloads
authorAnatoliy Talamanov <anatoliy.talamanov@intel.com>
Sat, 12 Sep 2020 22:02:21 +0000 (01:02 +0300)
committerGitHub <noreply@github.com>
Sat, 12 Sep 2020 22:02:21 +0000 (22:02 +0000)
[G-API] Wrap cv::gapi::mean kernel into python

* Wrap cv::gapi::mean kernel into python

* Fix test

modules/gapi/include/opencv2/gapi/core.hpp
modules/gapi/include/opencv2/gapi/gcomputation.hpp
modules/gapi/include/opencv2/gapi/gscalar.hpp
modules/gapi/misc/python/test/test_gapi_core.py

index ff59c62..5b9fb5a 100644 (file)
@@ -744,7 +744,7 @@ Supported matrix data types are @ref CV_8UC1, @ref CV_8UC3, @ref CV_16UC1, @ref
 @note Function textual ID is "org.opencv.core.math.mean"
 @param src input matrix.
 */
-GAPI_EXPORTS GScalar mean(const GMat& src);
+GAPI_EXPORTS_W GScalar mean(const GMat& src);
 
 /** @brief Calculates x and y coordinates of 2D vectors from their magnitude and angle.
 
index c600de9..d6b8561 100644 (file)
@@ -181,7 +181,7 @@ public:
      * @param in input GMat of the defined unary computation
      * @param out output GScalar of the defined unary computation
      */
-    GComputation(GMat in, GScalar out);                // Unary overload (scalar)
+    GAPI_WRAP GComputation(GMat in, GScalar out);      // Unary overload (scalar)
 
     /**
      * @brief Defines a binary (two inputs -- one output) computation
@@ -286,7 +286,7 @@ public:
      * @param args compilation arguments for underlying compilation
      * process.
      */
-    void apply(cv::Mat in, cv::Scalar &out, GCompileArgs &&args = {}); // Unary overload (scalar)
+    GAPI_WRAP void apply(cv::Mat in, CV_OUT cv::Scalar &out, GCompileArgs &&args = {}); // Unary overload (scalar)
 
     /**
      * @brief Execute a binary computation (with compilation on the fly)
index be20048..00abdd1 100644 (file)
@@ -26,10 +26,10 @@ struct GOrigin;
  * @{
  */
 
-class GAPI_EXPORTS GScalar
+class GAPI_EXPORTS_W_SIMPLE GScalar
 {
 public:
-    GScalar();                                         // Empty constructor
+    GAPI_WRAP GScalar();                    // Empty constructor
     explicit GScalar(const cv::Scalar& s);  // Constant value constructor from cv::Scalar
     explicit GScalar(cv::Scalar&& s);       // Constant value move-constructor from cv::Scalar
 
index 9e22725..773e542 100644 (file)
@@ -38,5 +38,23 @@ class gapi_core_test(NewOpenCVTests):
             self.assertEqual(0.0, cv.norm(expected, actual, cv.NORM_INF))
 
 
+    def test_mean(self):
+        sz = (1280, 720, 3)
+        in_mat = np.random.randint(0, 100, sz).astype(np.uint8)
+
+        # OpenCV
+        expected = cv.mean(in_mat)
+
+        # G-API
+        g_in = cv.GMat()
+        g_out = cv.gapi.mean(g_in)
+        comp = cv.GComputation(g_in, g_out)
+
+        for pkg in pkgs:
+            actual = comp.apply(in_mat, args=cv.compile_args(pkg))
+            # Comparison
+            self.assertEqual(0.0, cv.norm(expected, actual, cv.NORM_INF))
+
+
 if __name__ == '__main__':
     NewOpenCVTests.bootstrap()