From 557ac3dbafa6fe5aa1504f0a9aebc16a906a1e10 Mon Sep 17 00:00:00 2001 From: Maxim Pashchenkov Date: Wed, 1 Apr 2020 21:40:38 +0300 Subject: [PATCH] Merge pull request #16805 from Volskig:mp/ocv-gapi-standalone-scalar G-API: Unification of own:: Scalar with cv:: Scalar * cvdefs.hpp * Small changes * Deowned Scalar. Does't work * Something * Removed to_ocv for Scalar * Clear code * Deleted whitespaces * Added include<..own/scalar.hpp in cvdefs.hpp. * Long string split on two now * Comment about scalar * Comment about crutch * Removed second varible in scalar_wrapper * Changed wrapper for scalar, alignment * Alignment * Whitespaces * Removed scalar_wrapper --- .../include/opencv2/gapi/cpu/gcpukernel.hpp | 22 +++---------- .../opencv2/gapi/fluid/gfluidbuffer.hpp | 9 ++---- .../opencv2/gapi/fluid/gfluidkernel.hpp | 9 +----- modules/gapi/include/opencv2/gapi/garg.hpp | 7 ++--- modules/gapi/include/opencv2/gapi/gscalar.hpp | 14 ++------- .../include/opencv2/gapi/gtype_traits.hpp | 3 +- .../include/opencv2/gapi/ocl/goclkernel.hpp | 23 +++----------- .../gapi/include/opencv2/gapi/own/convert.hpp | 7 ----- .../gapi/include/opencv2/gapi/own/cvdefs.hpp | 3 ++ .../include/opencv2/gapi/render/render.hpp | 1 - modules/gapi/src/api/gbackend.cpp | 31 +++++++------------ modules/gapi/src/api/gproto.cpp | 21 +++++-------- modules/gapi/src/api/gscalar.cpp | 20 +++--------- modules/gapi/src/backends/common/gbackend.hpp | 5 ++- modules/gapi/src/backends/cpu/gcpubackend.cpp | 2 +- modules/gapi/src/backends/cpu/gcpukernel.cpp | 8 ++--- .../gapi/src/backends/fluid/gfluidbackend.cpp | 4 +-- .../gapi/src/backends/fluid/gfluidbackend.hpp | 2 +- .../gapi/src/backends/fluid/gfluidbuffer.cpp | 10 +++--- .../src/backends/fluid/gfluidbuffer_priv.hpp | 4 +-- .../gapi/src/backends/fluid/gfluidimgproc.cpp | 4 +-- modules/gapi/src/backends/ocl/goclbackend.cpp | 2 +- modules/gapi/src/backends/ocl/goclkernel.cpp | 8 ++--- modules/gapi/src/compiler/gobjref.hpp | 2 +- .../gapi/src/executor/gstreamingexecutor.cpp | 11 +++---- modules/gapi/test/gapi_async_test.cpp | 8 ++--- modules/gapi/test/gapi_fluid_test.cpp | 2 +- modules/gapi/test/gapi_fluid_test_kernels.cpp | 12 +++---- modules/gapi/test/gapi_kernel_tests.cpp | 1 - .../test/internal/gapi_int_gmetaarg_test.cpp | 4 +-- .../internal/gapi_int_gmodel_builder_test.cpp | 4 +-- 31 files changed, 90 insertions(+), 173 deletions(-) diff --git a/modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp b/modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp index 3ad970e0a1..59090cc502 100644 --- a/modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp +++ b/modules/gapi/include/opencv2/gapi/cpu/gcpukernel.hpp @@ -99,8 +99,8 @@ public: const cv::gapi::own::Mat& inMat(int input); cv::gapi::own::Mat& outMatR(int output); // FIXME: Avoid cv::gapi::own::Mat m = ctx.outMatR() - const cv::gapi::own::Scalar& inVal(int input); - cv::gapi::own::Scalar& outValR(int output); // FIXME: Avoid cv::gapi::own::Scalar s = ctx.outValR() + const cv::Scalar& inVal(int input); + cv::Scalar& outValR(int output); // FIXME: Avoid cv::Scalar s = ctx.outValR() template std::vector& outVecR(int output) // FIXME: the same issue { return outVecRef(output).wref(); @@ -155,7 +155,7 @@ template<> struct get_in }; template<> struct get_in { - static cv::Scalar get(GCPUContext &ctx, int idx) { return to_ocv(ctx.inVal(idx)); } + static cv::Scalar get(GCPUContext &ctx, int idx) { return ctx.inVal(idx); } }; template struct get_in > { @@ -208,23 +208,12 @@ struct tracked_cv_mat{ } }; -struct scalar_wrapper -{ - scalar_wrapper(cv::gapi::own::Scalar& s) : m_s{cv::gapi::own::to_ocv(s)}, m_org_s(s) {}; - operator cv::Scalar& () { return m_s; } - void writeBack() const { m_org_s = to_own(m_s); } - - cv::Scalar m_s; - cv::gapi::own::Scalar& m_org_s; -}; - template void postprocess(Outputs&... outs) { struct { void operator()(tracked_cv_mat* bm) { bm->validate(); } - void operator()(scalar_wrapper* sw) { sw->writeBack(); } void operator()(...) { } } validate; @@ -251,10 +240,9 @@ template<> struct get_out }; template<> struct get_out { - static scalar_wrapper get(GCPUContext &ctx, int idx) + static cv::Scalar& get(GCPUContext &ctx, int idx) { - auto& s = ctx.outValR(idx); - return {s}; + return ctx.outValR(idx); } }; template struct get_out> diff --git a/modules/gapi/include/opencv2/gapi/fluid/gfluidbuffer.hpp b/modules/gapi/include/opencv2/gapi/fluid/gfluidbuffer.hpp index a5dd4a6f89..de776c2daa 100644 --- a/modules/gapi/include/opencv2/gapi/fluid/gfluidbuffer.hpp +++ b/modules/gapi/include/opencv2/gapi/fluid/gfluidbuffer.hpp @@ -18,7 +18,6 @@ #include #include -#include #include namespace cv { @@ -27,13 +26,11 @@ namespace fluid { struct Border { -#if !defined(GAPI_STANDALONE) // This constructor is required to support existing kernels which are part of G-API - Border(int _type, cv::Scalar _val) : type(_type), value(to_own(_val)) {}; -#endif // !defined(GAPI_STANDALONE) - Border(int _type, cv::gapi::own::Scalar _val) : type(_type), value(_val) {}; + Border(int _type, cv::Scalar _val) : type(_type), value(_val) {}; + int type; - cv::gapi::own::Scalar value; + cv::Scalar value; }; using BorderOpt = util::optional; diff --git a/modules/gapi/include/opencv2/gapi/fluid/gfluidkernel.hpp b/modules/gapi/include/opencv2/gapi/fluid/gfluidkernel.hpp index 4d2e4a6525..437bea6b1a 100644 --- a/modules/gapi/include/opencv2/gapi/fluid/gfluidkernel.hpp +++ b/modules/gapi/include/opencv2/gapi/fluid/gfluidkernel.hpp @@ -179,17 +179,10 @@ template<> struct fluid_get_in template<> struct fluid_get_in { // FIXME: change to return by reference when moved to own::Scalar -#if !defined(GAPI_STANDALONE) static const cv::Scalar get(const cv::GArgs &in_args, int idx) { - return cv::gapi::own::to_ocv(in_args[idx].unsafe_get()); + return in_args[idx].unsafe_get(); } -#else - static const cv::gapi::own::Scalar get(const cv::GArgs &in_args, int idx) - { - return in_args[idx].get(); - } -#endif // !defined(GAPI_STANDALONE) }; template struct fluid_get_in> diff --git a/modules/gapi/include/opencv2/gapi/garg.hpp b/modules/gapi/include/opencv2/gapi/garg.hpp index 7228ac6daf..5aaea55985 100644 --- a/modules/gapi/include/opencv2/gapi/garg.hpp +++ b/modules/gapi/include/opencv2/gapi/garg.hpp @@ -23,7 +23,6 @@ #include #include #include -#include #include namespace cv { @@ -91,12 +90,11 @@ using GArgs = std::vector; using GRunArg = util::variant< #if !defined(GAPI_STANDALONE) cv::Mat, - cv::Scalar, cv::UMat, #endif // !defined(GAPI_STANDALONE) cv::gapi::wip::IStreamSource::Ptr, cv::gapi::own::Mat, - cv::gapi::own::Scalar, + cv::Scalar, cv::detail::VectorRef, cv::detail::OpaqueRef >; @@ -125,11 +123,10 @@ struct Data: public GRunArg using GRunArgP = util::variant< #if !defined(GAPI_STANDALONE) cv::Mat*, - cv::Scalar*, cv::UMat*, #endif // !defined(GAPI_STANDALONE) cv::gapi::own::Mat*, - cv::gapi::own::Scalar*, + cv::Scalar*, cv::detail::VectorRef, cv::detail::OpaqueRef >; diff --git a/modules/gapi/include/opencv2/gapi/gscalar.hpp b/modules/gapi/include/opencv2/gapi/gscalar.hpp index f65741e61d..be20048b77 100644 --- a/modules/gapi/include/opencv2/gapi/gscalar.hpp +++ b/modules/gapi/include/opencv2/gapi/gscalar.hpp @@ -14,7 +14,6 @@ #include #include // GShape #include -#include namespace cv { @@ -31,11 +30,9 @@ class GAPI_EXPORTS GScalar { public: GScalar(); // Empty constructor - explicit GScalar(const cv::gapi::own::Scalar& s); // Constant value constructor from cv::gapi::own::Scalar - explicit GScalar(cv::gapi::own::Scalar&& s); // Constant value move-constructor from cv::gapi::own::Scalar -#if !defined(GAPI_STANDALONE) - explicit GScalar(const cv::Scalar& s); // Constant value constructor from cv::Scalar -#endif // !defined(GAPI_STANDALONE) + explicit GScalar(const cv::Scalar& s); // Constant value constructor from cv::Scalar + explicit GScalar(cv::Scalar&& s); // Constant value move-constructor from cv::Scalar + GScalar(double v0); // Constant value constructor from double GScalar(const GNode &n, std::size_t out); // Operation result constructor @@ -69,12 +66,7 @@ struct GScalarDesc static inline GScalarDesc empty_scalar_desc() { return GScalarDesc(); } -#if !defined(GAPI_STANDALONE) GAPI_EXPORTS GScalarDesc descr_of(const cv::Scalar &scalar); -#endif // !defined(GAPI_STANDALONE) -/** @} */ - -GAPI_EXPORTS GScalarDesc descr_of(const cv::gapi::own::Scalar &scalar); std::ostream& operator<<(std::ostream& os, const cv::GScalarDesc &desc); diff --git a/modules/gapi/include/opencv2/gapi/gtype_traits.hpp b/modules/gapi/include/opencv2/gapi/gtype_traits.hpp index fa871d1fed..85bcb69bac 100644 --- a/modules/gapi/include/opencv2/gapi/gtype_traits.hpp +++ b/modules/gapi/include/opencv2/gapi/gtype_traits.hpp @@ -107,10 +107,9 @@ namespace detail #if !defined(GAPI_STANDALONE) template<> struct GTypeOf { using type = cv::GMat; }; template<> struct GTypeOf { using type = cv::GMat; }; - template<> struct GTypeOf { using type = cv::GScalar; }; #endif // !defined(GAPI_STANDALONE) template<> struct GTypeOf { using type = cv::GMat; }; - template<> struct GTypeOf { using type = cv::GScalar; }; + template<> struct GTypeOf { using type = cv::GScalar; }; template struct GTypeOf > { using type = cv::GArray; }; template struct GTypeOf { using type = cv::GOpaque;}; // FIXME: This is not quite correct since IStreamSource may produce not only Mat but also Scalar diff --git a/modules/gapi/include/opencv2/gapi/ocl/goclkernel.hpp b/modules/gapi/include/opencv2/gapi/ocl/goclkernel.hpp index e80854affc..ee363c05a0 100644 --- a/modules/gapi/include/opencv2/gapi/ocl/goclkernel.hpp +++ b/modules/gapi/include/opencv2/gapi/ocl/goclkernel.hpp @@ -62,8 +62,8 @@ public: const cv::UMat& inMat(int input); cv::UMat& outMatR(int output); // FIXME: Avoid cv::Mat m = ctx.outMatR() - const cv::gapi::own::Scalar& inVal(int input); - cv::gapi::own::Scalar& outValR(int output); // FIXME: Avoid cv::gapi::own::Scalar s = ctx.outValR() + const cv::Scalar& inVal(int input); + cv::Scalar& outValR(int output); // FIXME: Avoid cv::Scalar s = ctx.outValR() template std::vector& outVecR(int output) // FIXME: the same issue { return outVecRef(output).wref(); @@ -110,7 +110,7 @@ template<> struct ocl_get_in }; template<> struct ocl_get_in { - static cv::Scalar get(GOCLContext &ctx, int idx) { return to_ocv(ctx.inVal(idx)); } + static cv::Scalar get(GOCLContext &ctx, int idx) { return ctx.inVal(idx); } }; template struct ocl_get_in > { @@ -146,24 +146,12 @@ struct tracked_cv_umat{ } }; -struct scalar_wrapper_ocl -{ - //FIXME reuse CPU (OpenCV) plugin code - scalar_wrapper_ocl(cv::gapi::own::Scalar& s) : m_s{cv::gapi::own::to_ocv(s)}, m_org_s(s) {}; - operator cv::Scalar& () { return m_s; } - void writeBack() const { m_org_s = to_own(m_s); } - - cv::Scalar m_s; - cv::gapi::own::Scalar& m_org_s; -}; - template void postprocess_ocl(Outputs&... outs) { struct { void operator()(tracked_cv_umat* bm) { bm->validate(); } - void operator()(scalar_wrapper_ocl* sw) { sw->writeBack(); } void operator()(...) { } } validate; @@ -183,10 +171,9 @@ template<> struct ocl_get_out }; template<> struct ocl_get_out { - static scalar_wrapper_ocl get(GOCLContext &ctx, int idx) + static cv::Scalar& get(GOCLContext &ctx, int idx) { - auto& s = ctx.outValR(idx); - return{ s }; + return ctx.outValR(idx); } }; template struct ocl_get_out > diff --git a/modules/gapi/include/opencv2/gapi/own/convert.hpp b/modules/gapi/include/opencv2/gapi/own/convert.hpp index a315444456..52a58eb72b 100644 --- a/modules/gapi/include/opencv2/gapi/own/convert.hpp +++ b/modules/gapi/include/opencv2/gapi/own/convert.hpp @@ -13,7 +13,6 @@ #include #include #include -#include namespace cv { @@ -35,9 +34,6 @@ namespace cv : cv::gapi::own::Mat{to_own(m.size), m.type(), m.data}; }; - - inline cv::gapi::own::Scalar to_own(const cv::Scalar& s) { return {s[0], s[1], s[2], s[3]}; }; - inline cv::gapi::own::Size to_own (const Size& s) { return {s.width, s.height}; }; inline cv::gapi::own::Rect to_own (const Rect& r) { return {r.x, r.y, r.width, r.height}; }; @@ -53,9 +49,6 @@ namespace own : cv::Mat{m.dims, m.type(), m.data}; } cv::Mat to_ocv(Mat&&) = delete; - - inline cv::Scalar to_ocv(const Scalar& s) { return {s[0], s[1], s[2], s[3]}; }; - inline cv::Size to_ocv (const Size& s) { return cv::Size(s.width, s.height); }; inline cv::Rect to_ocv (const Rect& r) { return cv::Rect(r.x, r.y, r.width, r.height); }; diff --git a/modules/gapi/include/opencv2/gapi/own/cvdefs.hpp b/modules/gapi/include/opencv2/gapi/own/cvdefs.hpp index 71c2aa8e2d..1a2ea7787e 100644 --- a/modules/gapi/include/opencv2/gapi/own/cvdefs.hpp +++ b/modules/gapi/include/opencv2/gapi/own/cvdefs.hpp @@ -9,6 +9,7 @@ #define OPENCV_GAPI_CV_DEFS_HPP #if defined(GAPI_STANDALONE) +#include // cv::gapi::own::Scalar // Simulate OpenCV definitions taken from various // OpenCV interface headers if G-API is built in a @@ -137,6 +138,8 @@ enum InterpolationFlags{ INTER_LINEAR_EXACT = 5, INTER_MAX = 7, }; +// replacement of cv's structures: +using Scalar = gapi::own::Scalar; } // namespace cv static inline int cvFloor( double value ) diff --git a/modules/gapi/include/opencv2/gapi/render/render.hpp b/modules/gapi/include/opencv2/gapi/render/render.hpp index 7bdc57a093..fcb69cb4f0 100644 --- a/modules/gapi/include/opencv2/gapi/render/render.hpp +++ b/modules/gapi/include/opencv2/gapi/render/render.hpp @@ -17,7 +17,6 @@ #include #include #include -#include /** \defgroup gapi_draw G-API Drawing and composition functionality diff --git a/modules/gapi/src/api/gbackend.cpp b/modules/gapi/src/api/gbackend.cpp index 304c58195d..284719e4ea 100644 --- a/modules/gapi/src/api/gbackend.cpp +++ b/modules/gapi/src/api/gbackend.cpp @@ -152,14 +152,11 @@ void bindInArg(Mag& mag, const RcDesc &rc, const GRunArg &arg, bool is_umat) case GShape::GSCALAR: { - auto& mag_scalar = mag.template slot()[rc.id]; + auto& mag_scalar = mag.template slot()[rc.id]; switch (arg.index()) { - case GRunArg::index_of() : mag_scalar = util::get(arg); break; -#if !defined(GAPI_STANDALONE) - case GRunArg::index_of() : mag_scalar = to_own(util::get(arg)); break; -#endif // !defined(GAPI_STANDALONE) - default: util::throw_error(std::logic_error("content type of the runtime argument does not match to resource description ?")); + case GRunArg::index_of() : mag_scalar = util::get(arg); break; + default: util::throw_error(std::logic_error("content type of the runtime argument does not match to resource description ?")); } break; } @@ -222,14 +219,11 @@ void bindOutArg(Mag& mag, const RcDesc &rc, const GRunArgP &arg, bool is_umat) case GShape::GSCALAR: { - auto& mag_scalar = mag.template slot()[rc.id]; + auto& mag_scalar = mag.template slot()[rc.id]; switch (arg.index()) { - case GRunArgP::index_of() : mag_scalar = *util::get(arg); break; -#if !defined(GAPI_STANDALONE) - case GRunArgP::index_of() : mag_scalar = to_own(*util::get(arg)); break; -#endif // !defined(GAPI_STANDALONE) - default: util::throw_error(std::logic_error("content type of the runtime argument does not match to resource description ?")); + case GRunArgP::index_of() : mag_scalar = *util::get(arg); break; + default: util::throw_error(std::logic_error("content type of the runtime argument does not match to resource description ?")); } break; } @@ -265,7 +259,7 @@ void resetInternalData(Mag& mag, const Data &d) break; case GShape::GSCALAR: - mag.template slot()[d.rc] = cv::gapi::own::Scalar(); + mag.template slot()[d.rc] = cv::Scalar(); break; case GShape::GMAT: @@ -284,7 +278,7 @@ cv::GRunArg getArg(const Mag& mag, const RcDesc &ref) switch (ref.shape) { case GShape::GMAT: return GRunArg(mag.template slot().at(ref.id)); - case GShape::GSCALAR: return GRunArg(mag.template slot().at(ref.id)); + case GShape::GSCALAR: return GRunArg(mag.template slot().at(ref.id)); // Note: .at() is intentional for GArray and GOpaque as objects MUST be already there // (and constructed by either bindIn/Out or resetInternal) case GShape::GARRAY: return GRunArg(mag.template slot().at(ref.id)); @@ -310,7 +304,7 @@ cv::GRunArgP getObjPtr(Mag& mag, const RcDesc &rc, bool is_umat) } else return GRunArgP(&mag.template slot()[rc.id]); - case GShape::GSCALAR: return GRunArgP(&mag.template slot()[rc.id]); + case GShape::GSCALAR: return GRunArgP(&mag.template slot()[rc.id]); // Note: .at() is intentional for GArray and GOpaque as objects MUST be already there // (and constructor by either bindIn/Out or resetInternal) case GShape::GARRAY: @@ -381,11 +375,8 @@ void writeBack(const Mag& mag, const RcDesc &rc, GRunArgP &g_arg, bool is_umat) { switch (g_arg.index()) { - case GRunArgP::index_of() : *util::get(g_arg) = mag.template slot().at(rc.id); break; -#if !defined(GAPI_STANDALONE) - case GRunArgP::index_of() : *util::get(g_arg) = cv::gapi::own::to_ocv(mag.template slot().at(rc.id)); break; -#endif // !defined(GAPI_STANDALONE) - default: util::throw_error(std::logic_error("content type of the runtime argument does not match to resource description ?")); + case GRunArgP::index_of() : *util::get(g_arg) = mag.template slot().at(rc.id); break; + default: util::throw_error(std::logic_error("content type of the runtime argument does not match to resource description ?")); } break; } diff --git a/modules/gapi/src/api/gproto.cpp b/modules/gapi/src/api/gproto.cpp index e541ba2092..d6a68d5f03 100644 --- a/modules/gapi/src/api/gproto.cpp +++ b/modules/gapi/src/api/gproto.cpp @@ -74,7 +74,7 @@ cv::GRunArg cv::value_of(const cv::GOrigin &origin) { switch (origin.shape) { - case GShape::GSCALAR: return GRunArg(util::get(origin.value)); + case GShape::GSCALAR: return GRunArg(util::get(origin.value)); default: util::throw_error(std::logic_error("Unsupported shape for constant")); } } @@ -102,15 +102,13 @@ cv::GMetaArg cv::descr_of(const cv::GRunArg &arg) case GRunArg::index_of(): return cv::GMetaArg(descr_of(util::get(arg))); - case GRunArg::index_of(): - return cv::GMetaArg(descr_of(util::get(arg))); #endif // !defined(GAPI_STANDALONE) case GRunArg::index_of(): return cv::GMetaArg(descr_of(util::get(arg))); - case GRunArg::index_of(): - return cv::GMetaArg(descr_of(util::get(arg))); + case GRunArg::index_of(): + return cv::GMetaArg(descr_of(util::get(arg))); case GRunArg::index_of(): return cv::GMetaArg(util::get(arg).descr_of()); @@ -139,12 +137,11 @@ cv::GMetaArg cv::descr_of(const cv::GRunArgP &argp) #if !defined(GAPI_STANDALONE) case GRunArgP::index_of(): return GMetaArg(descr_of(*util::get(argp))); case GRunArgP::index_of(): return GMetaArg(descr_of(*util::get(argp))); - case GRunArgP::index_of(): return GMetaArg(descr_of(*util::get(argp))); #endif // !defined(GAPI_STANDALONE) case GRunArgP::index_of(): return GMetaArg(descr_of(*util::get(argp))); - case GRunArgP::index_of(): return GMetaArg(descr_of(*util::get(argp))); - case GRunArgP::index_of(): return GMetaArg(util::get(argp).descr_of()); - case GRunArgP::index_of(): return GMetaArg(util::get(argp).descr_of()); + case GRunArgP::index_of(): return GMetaArg(descr_of(*util::get(argp))); + case GRunArgP::index_of(): return GMetaArg(util::get(argp).descr_of()); + case GRunArgP::index_of(): return GMetaArg(util::get(argp).descr_of()); default: util::throw_error(std::logic_error("Unsupported GRunArgP type")); } } @@ -157,11 +154,10 @@ bool cv::can_describe(const GMetaArg& meta, const GRunArgP& argp) case GRunArgP::index_of(): return util::holds_alternative(meta) && util::get(meta).canDescribe(*util::get(argp)); case GRunArgP::index_of(): return meta == GMetaArg(descr_of(*util::get(argp))); - case GRunArgP::index_of(): return meta == GMetaArg(descr_of(*util::get(argp))); #endif // !defined(GAPI_STANDALONE) case GRunArgP::index_of(): return util::holds_alternative(meta) && util::get(meta).canDescribe(*util::get(argp)); - case GRunArgP::index_of(): return meta == GMetaArg(descr_of(*util::get(argp))); + case GRunArgP::index_of(): return meta == GMetaArg(descr_of(*util::get(argp))); case GRunArgP::index_of(): return meta == GMetaArg(util::get(argp).descr_of()); case GRunArgP::index_of(): return meta == GMetaArg(util::get(argp).descr_of()); default: util::throw_error(std::logic_error("Unsupported GRunArgP type")); @@ -176,11 +172,10 @@ bool cv::can_describe(const GMetaArg& meta, const GRunArg& arg) case GRunArg::index_of(): return util::holds_alternative(meta) && util::get(meta).canDescribe(util::get(arg)); case GRunArg::index_of(): return meta == cv::GMetaArg(descr_of(util::get(arg))); - case GRunArg::index_of(): return meta == cv::GMetaArg(descr_of(util::get(arg))); #endif // !defined(GAPI_STANDALONE) case GRunArg::index_of(): return util::holds_alternative(meta) && util::get(meta).canDescribe(util::get(arg)); - case GRunArg::index_of(): return meta == cv::GMetaArg(descr_of(util::get(arg))); + case GRunArg::index_of(): return meta == cv::GMetaArg(descr_of(util::get(arg))); case GRunArg::index_of(): return meta == cv::GMetaArg(util::get(arg).descr_of()); case GRunArg::index_of(): return meta == cv::GMetaArg(util::get(arg).descr_of()); case GRunArg::index_of(): return util::holds_alternative(meta); // FIXME(?) may be not the best option diff --git a/modules/gapi/src/api/gscalar.cpp b/modules/gapi/src/api/gscalar.cpp index fa7c0cdda4..492d016255 100644 --- a/modules/gapi/src/api/gscalar.cpp +++ b/modules/gapi/src/api/gscalar.cpp @@ -22,18 +22,18 @@ cv::GScalar::GScalar(const GNode &n, std::size_t out) { } -cv::GScalar::GScalar(const cv::gapi::own::Scalar& s) +cv::GScalar::GScalar(const cv::Scalar& s) : m_priv(new GOrigin(GShape::GSCALAR, cv::gimpl::ConstVal(s))) { } -cv::GScalar::GScalar(cv::gapi::own::Scalar&& s) +cv::GScalar::GScalar(cv::Scalar&& s) : m_priv(new GOrigin(GShape::GSCALAR, cv::gimpl::ConstVal(std::move(s)))) { } cv::GScalar::GScalar(double v0) - : m_priv(new GOrigin(GShape::GSCALAR, cv::gimpl::ConstVal(cv::gapi::own::Scalar(v0)))) + : m_priv(new GOrigin(GShape::GSCALAR, cv::gimpl::ConstVal(cv::Scalar(v0)))) { } @@ -47,23 +47,11 @@ const cv::GOrigin& cv::GScalar::priv() const return *m_priv; } -cv::GScalarDesc cv::descr_of(const cv::gapi::own::Scalar &) +cv::GScalarDesc cv::descr_of(const cv::Scalar &) { return empty_scalar_desc(); } -#if !defined(GAPI_STANDALONE) -cv::GScalar::GScalar(const cv::Scalar& s) - : m_priv(new GOrigin(GShape::GSCALAR, cv::gimpl::ConstVal(to_own(s)))) -{ -} - -cv::GScalarDesc cv::descr_of(const cv::Scalar& s) -{ - return cv::descr_of(to_own(s)); -} -#endif // !defined(GAPI_STANDALONE) - namespace cv { std::ostream& operator<<(std::ostream& os, const cv::GScalarDesc &) { diff --git a/modules/gapi/src/backends/common/gbackend.hpp b/modules/gapi/src/backends/common/gbackend.hpp index dd5624ba2d..ee3bfa2123 100644 --- a/modules/gapi/src/backends/common/gbackend.hpp +++ b/modules/gapi/src/backends/common/gbackend.hpp @@ -17,7 +17,6 @@ #include "opencv2/gapi/own/mat.hpp" #include "opencv2/gapi/util/optional.hpp" -#include "opencv2/gapi/own/scalar.hpp" #include "compiler/gmodel.hpp" @@ -46,9 +45,9 @@ namespace magazine { } // namespace magazine #if !defined(GAPI_STANDALONE) -using Mag = magazine::Class; +using Mag = magazine::Class; #else -using Mag = magazine::Class; +using Mag = magazine::Class; #endif namespace magazine diff --git a/modules/gapi/src/backends/cpu/gcpubackend.cpp b/modules/gapi/src/backends/cpu/gcpubackend.cpp index 14eeaaacac..29310eee0a 100644 --- a/modules/gapi/src/backends/cpu/gcpubackend.cpp +++ b/modules/gapi/src/backends/cpu/gcpubackend.cpp @@ -129,7 +129,7 @@ cv::GArg cv::gimpl::GCPUExecutable::packArg(const GArg &arg) switch (ref.shape) { case GShape::GMAT: return GArg(m_res.slot() [ref.id]); - case GShape::GSCALAR: return GArg(m_res.slot()[ref.id]); + case GShape::GSCALAR: return GArg(m_res.slot()[ref.id]); // Note: .at() is intentional for GArray and GOpaque as objects MUST be already there // (and constructed by either bindIn/Out or resetInternal) case GShape::GARRAY: return GArg(m_res.slot().at(ref.id)); diff --git a/modules/gapi/src/backends/cpu/gcpukernel.cpp b/modules/gapi/src/backends/cpu/gcpukernel.cpp index 52137d8c0d..238ced2bc7 100644 --- a/modules/gapi/src/backends/cpu/gcpukernel.cpp +++ b/modules/gapi/src/backends/cpu/gcpukernel.cpp @@ -21,14 +21,14 @@ cv::gapi::own::Mat& cv::GCPUContext::outMatR(int output) return *util::get(m_results.at(output)); } -const cv::gapi::own::Scalar& cv::GCPUContext::inVal(int input) +const cv::Scalar& cv::GCPUContext::inVal(int input) { - return inArg(input); + return inArg(input); } -cv::gapi::own::Scalar& cv::GCPUContext::outValR(int output) +cv::Scalar& cv::GCPUContext::outValR(int output) { - return *util::get(m_results.at(output)); + return *util::get(m_results.at(output)); } cv::detail::VectorRef& cv::GCPUContext::outVecRef(int output) diff --git a/modules/gapi/src/backends/fluid/gfluidbackend.cpp b/modules/gapi/src/backends/fluid/gfluidbackend.cpp index 1c926b4d83..98a696c337 100644 --- a/modules/gapi/src/backends/fluid/gfluidbackend.cpp +++ b/modules/gapi/src/backends/fluid/gfluidbackend.cpp @@ -1248,7 +1248,7 @@ void cv::gimpl::GFluidExecutable::bindInArg(const cv::gimpl::RcDesc &rc, const G switch (rc.shape) { case GShape::GMAT: m_buffers[m_id_map.at(rc.id)].priv().bindTo(util::get(arg), true); break; - case GShape::GSCALAR: m_res.slot()[rc.id] = util::get(arg); break; + case GShape::GSCALAR: m_res.slot()[rc.id] = util::get(arg); break; case GShape::GARRAY: m_res.slot()[rc.id] = util::get(arg); break; case GShape::GOPAQUE: m_res.slot()[rc.id] = util::get(arg); break; } @@ -1301,7 +1301,7 @@ void cv::gimpl::GFluidExecutable::packArg(cv::GArg &in_arg, const cv::GArg &op_a const cv::gimpl::RcDesc &ref = op_arg.get(); if (ref.shape == GShape::GSCALAR) { - in_arg = GArg(m_res.slot()[ref.id]); + in_arg = GArg(m_res.slot()[ref.id]); } else if (ref.shape == GShape::GARRAY) { diff --git a/modules/gapi/src/backends/fluid/gfluidbackend.hpp b/modules/gapi/src/backends/fluid/gfluidbackend.hpp index 63ca9deb83..d100ca5d9e 100644 --- a/modules/gapi/src/backends/fluid/gfluidbackend.hpp +++ b/modules/gapi/src/backends/fluid/gfluidbackend.hpp @@ -129,7 +129,7 @@ class GFluidExecutable final: public GIslandExecutable std::vector m_script; - using Magazine = detail::magazine; + using Magazine = detail::magazine; Magazine m_res; std::size_t m_num_int_buffers; // internal buffers counter (m_buffers - num_scratch) diff --git a/modules/gapi/src/backends/fluid/gfluidbuffer.cpp b/modules/gapi/src/backends/fluid/gfluidbuffer.cpp index e2a78078df..b262260987 100644 --- a/modules/gapi/src/backends/fluid/gfluidbuffer.cpp +++ b/modules/gapi/src/backends/fluid/gfluidbuffer.cpp @@ -64,7 +64,7 @@ void fillBorderReflectRow(uint8_t* row, int length, int chan, int borderSize) } template -void fillConstBorderRow(uint8_t* row, int length, int chan, int borderSize, cv::gapi::own::Scalar borderValue) +void fillConstBorderRow(uint8_t* row, int length, int chan, int borderSize, cv::Scalar borderValue) { GAPI_DbgAssert(chan > 0 && chan <= 4); @@ -81,7 +81,7 @@ void fillConstBorderRow(uint8_t* row, int length, int chan, int borderSize, cv:: } // Fills const border pixels in the whole mat -void fillBorderConstant(int borderSize, cv::gapi::own::Scalar borderValue, cv::gapi::own::Mat& mat) +void fillBorderConstant(int borderSize, cv::Scalar borderValue, cv::gapi::own::Mat& mat) { // cv::Scalar can contain maximum 4 chan GAPI_Assert(mat.channels() > 0 && mat.channels() <= 4); @@ -169,7 +169,7 @@ const uint8_t* fluid::BorderHandlerT::inLineB(int log_idx, const Buf return data.ptr(idx); } -fluid::BorderHandlerT::BorderHandlerT(int border_size, cv::gapi::own::Scalar border_value) +fluid::BorderHandlerT::BorderHandlerT(int border_size, cv::Scalar border_value) : BorderHandler(border_size), m_border_value(border_value) { /* nothing */ } @@ -181,7 +181,9 @@ const uint8_t* fluid::BorderHandlerT::inLineB(int /*log_idx void fluid::BorderHandlerT::fillCompileTimeBorder(BufferStorageWithBorder& data) { m_const_border.create(1, data.cols(), data.data().type()); - m_const_border = m_border_value; + // FIXME: remove this crutch in deowned Mat + m_const_border = {m_border_value[0], m_border_value[1], + m_border_value[2], m_border_value[3]}; cv::gapi::fillBorderConstant(m_border_size, m_border_value, data.data()); } diff --git a/modules/gapi/src/backends/fluid/gfluidbuffer_priv.hpp b/modules/gapi/src/backends/fluid/gfluidbuffer_priv.hpp index 5925489ddf..e62cf4f277 100644 --- a/modules/gapi/src/backends/fluid/gfluidbuffer_priv.hpp +++ b/modules/gapi/src/backends/fluid/gfluidbuffer_priv.hpp @@ -52,11 +52,11 @@ public: template<> class BorderHandlerT : public BorderHandler { - cv::gapi::own::Scalar m_border_value; + cv::Scalar m_border_value; cv::gapi::own::Mat m_const_border; public: - BorderHandlerT(int border_size, cv::gapi::own::Scalar border_value); + BorderHandlerT(int border_size, cv::Scalar border_value); virtual const uint8_t* inLineB(int log_idx, const BufferStorageWithBorder &data, int desc_height) const override; virtual void fillCompileTimeBorder(BufferStorageWithBorder &) override; virtual std::size_t size() const override; diff --git a/modules/gapi/src/backends/fluid/gfluidimgproc.cpp b/modules/gapi/src/backends/fluid/gfluidimgproc.cpp index 2c685f0486..d7993c5c5c 100644 --- a/modules/gapi/src/backends/fluid/gfluidimgproc.cpp +++ b/modules/gapi/src/backends/fluid/gfluidimgproc.cpp @@ -1525,7 +1525,7 @@ GAPI_FLUID_KERNEL(GFluidErode, cv::gapi::imgproc::GErode, true) #if 1 // TODO: saturate borderValue to image type in general case (not only maximal border) GAPI_Assert(borderType == cv::BORDER_CONSTANT && borderValue[0] == DBL_MAX); - return { borderType, cv::gapi::own::Scalar::all(INT_MAX) }; + return { borderType, cv::Scalar::all(INT_MAX) }; #else return { borderType, borderValue }; #endif @@ -1611,7 +1611,7 @@ GAPI_FLUID_KERNEL(GFluidDilate, cv::gapi::imgproc::GDilate, true) #if 1 // TODO: fix borderValue for Dilate in general case (not only minimal border) GAPI_Assert(borderType == cv::BORDER_CONSTANT && borderValue[0] == DBL_MAX); - return { borderType, cv::gapi::own::Scalar::all(INT_MIN) }; + return { borderType, cv::Scalar::all(INT_MIN) }; #else return { borderType, borderValue }; #endif diff --git a/modules/gapi/src/backends/ocl/goclbackend.cpp b/modules/gapi/src/backends/ocl/goclbackend.cpp index 560d8446be..718cd3193f 100644 --- a/modules/gapi/src/backends/ocl/goclbackend.cpp +++ b/modules/gapi/src/backends/ocl/goclbackend.cpp @@ -129,7 +129,7 @@ cv::GArg cv::gimpl::GOCLExecutable::packArg(const GArg &arg) switch (ref.shape) { case GShape::GMAT: return GArg(m_res.slot()[ref.id]); - case GShape::GSCALAR: return GArg(m_res.slot()[ref.id]); + case GShape::GSCALAR: return GArg(m_res.slot()[ref.id]); // Note: .at() is intentional for GArray as object MUST be already there // (and constructed by either bindIn/Out or resetInternal) case GShape::GARRAY: return GArg(m_res.slot().at(ref.id)); diff --git a/modules/gapi/src/backends/ocl/goclkernel.cpp b/modules/gapi/src/backends/ocl/goclkernel.cpp index 11ca51be45..585e0174c8 100644 --- a/modules/gapi/src/backends/ocl/goclkernel.cpp +++ b/modules/gapi/src/backends/ocl/goclkernel.cpp @@ -19,14 +19,14 @@ cv::UMat& cv::GOCLContext::outMatR(int output) return (*(util::get(m_results.at(output)))); } -const cv::gapi::own::Scalar& cv::GOCLContext::inVal(int input) +const cv::Scalar& cv::GOCLContext::inVal(int input) { - return inArg(input); + return inArg(input); } -cv::gapi::own::Scalar& cv::GOCLContext::outValR(int output) +cv::Scalar& cv::GOCLContext::outValR(int output) { - return *util::get(m_results.at(output)); + return *util::get(m_results.at(output)); } cv::detail::VectorRef& cv::GOCLContext::outVecRef(int output) diff --git a/modules/gapi/src/compiler/gobjref.hpp b/modules/gapi/src/compiler/gobjref.hpp index 04686e2641..acbb64bb5a 100644 --- a/modules/gapi/src/compiler/gobjref.hpp +++ b/modules/gapi/src/compiler/gobjref.hpp @@ -28,7 +28,7 @@ namespace gimpl using ConstVal = util::variant < util::monostate - , cv::gapi::own::Scalar + , cv::Scalar >; struct RcDesc diff --git a/modules/gapi/src/executor/gstreamingexecutor.cpp b/modules/gapi/src/executor/gstreamingexecutor.cpp index 55fad0b12c..70be78f3d7 100644 --- a/modules/gapi/src/executor/gstreamingexecutor.cpp +++ b/modules/gapi/src/executor/gstreamingexecutor.cpp @@ -112,15 +112,12 @@ void sync_data(cv::GRunArgs &results, cv::GRunArgsP &outputs) case T::index_of(): *cv::util::get(out_obj) = std::move(cv::util::get(res_obj)); break; - case T::index_of(): - *cv::util::get(out_obj) = std::move(cv::util::get(res_obj)); - break; #endif // !GAPI_STANDALONE case T::index_of(): *cv::util::get(out_obj) = std::move(cv::util::get(res_obj)); break; - case T::index_of(): - *cv::util::get(out_obj) = std::move(cv::util::get(res_obj)); + case T::index_of(): + *cv::util::get(out_obj) = std::move(cv::util::get(res_obj)); break; case T::index_of(): cv::util::get(out_obj).mov(cv::util::get(res_obj)); @@ -418,7 +415,7 @@ void islandActorThread(std::vector in_rcs, // isl_input.second = cv::GRunArg{cv::to_own(cv::util::get(in_arg))}; break; case cv::GRunArg::index_of(): - isl_input.second = cv::GRunArg{cv::to_own(cv::util::get(in_arg))}; + isl_input.second = cv::GRunArg{cv::util::get(in_arg)}; break; default: isl_input.second = in_arg; @@ -443,7 +440,7 @@ void islandActorThread(std::vector in_rcs, // using SclType = cv::Scalar; #else using MatType = cv::gapi::own::Mat; - using SclType = cv::gapi::own::Scalar; + using SclType = cv::Scalar; #endif // GAPI_STANDALONE switch (r.shape) { diff --git a/modules/gapi/test/gapi_async_test.cpp b/modules/gapi/test/gapi_async_test.cpp index 38a3bbb5ec..3e5bec9d5f 100644 --- a/modules/gapi/test/gapi_async_test.cpp +++ b/modules/gapi/test/gapi_async_test.cpp @@ -388,11 +388,10 @@ namespace { switch (arg.index()){ #if !defined(GAPI_STANDALONE) case GRunArgP::index_of() : result.emplace_back(*util::get(arg)); break; - case GRunArgP::index_of() : result.emplace_back(*util::get(arg)); break; case GRunArgP::index_of() : result.emplace_back(*util::get(arg)); break; #endif // !defined(GAPI_STANDALONE) case GRunArgP::index_of() : result.emplace_back(*util::get (arg)); break; - case GRunArgP::index_of() : result.emplace_back(*util::get(arg)); break; + case GRunArgP::index_of() : result.emplace_back(*util::get (arg)); break; case GRunArgP::index_of() : result.emplace_back(util::get (arg)); break; default : ; } @@ -406,12 +405,11 @@ namespace { switch (arg.index()){ #if !defined(GAPI_STANDALONE) case GRunArg::index_of() : result.emplace_back(&util::get(arg)); break; - case GRunArg::index_of() : result.emplace_back(&util::get(arg)); break; case GRunArg::index_of() : result.emplace_back(&util::get(arg)); break; #endif // !defined(GAPI_STANDALONE) case GRunArg::index_of() : result.emplace_back(&util::get (arg)); break; - case GRunArg::index_of() : result.emplace_back(&util::get(arg)); break; - case GRunArg::index_of() : result.emplace_back(util::get (arg)); break; + case GRunArg::index_of() : result.emplace_back(&util::get (arg)); break; + case GRunArg::index_of() : result.emplace_back(util::get (arg)); break; default : ; } } diff --git a/modules/gapi/test/gapi_fluid_test.cpp b/modules/gapi/test/gapi_fluid_test.cpp index d80c01af97..eeb87897b2 100644 --- a/modules/gapi/test/gapi_fluid_test.cpp +++ b/modules/gapi/test/gapi_fluid_test.cpp @@ -75,7 +75,7 @@ TEST(FluidBuffer, CircularTest) const cv::Size buffer_size = {8,16}; cv::gapi::fluid::Buffer buffer(cv::GMatDesc{CV_8U,1,buffer_size}, 3, 1, 0, 1, - util::make_optional(cv::gapi::fluid::Border{cv::BORDER_CONSTANT, cv::gapi::own::Scalar(255)})); + util::make_optional(cv::gapi::fluid::Border{cv::BORDER_CONSTANT, cv::Scalar(255)})); cv::gapi::fluid::View view = buffer.mkView(1, {}); view.priv().reset(3); view.priv().allocate(3, {}); diff --git a/modules/gapi/test/gapi_fluid_test_kernels.cpp b/modules/gapi/test/gapi_fluid_test_kernels.cpp index fb643649da..b298de39d0 100644 --- a/modules/gapi/test/gapi_fluid_test_kernels.cpp +++ b/modules/gapi/test/gapi_fluid_test_kernels.cpp @@ -184,7 +184,7 @@ GAPI_FLUID_KERNEL(FBlur3x3, TBlur3x3, false) static cv::gapi::fluid::Border getBorder(const cv::GMatDesc &/*src*/, int borderType, cv::Scalar borderValue) { - return { borderType, to_own(borderValue)}; + return { borderType, borderValue}; } }; @@ -200,7 +200,7 @@ GAPI_FLUID_KERNEL(FBlur5x5, TBlur5x5, false) static cv::gapi::fluid::Border getBorder(const cv::GMatDesc &/*src*/, int borderType, cv::Scalar borderValue) { - return { borderType, to_own(borderValue)}; + return { borderType, borderValue}; } }; @@ -217,7 +217,7 @@ GAPI_FLUID_KERNEL(FBlur3x3_2lpi, TBlur3x3_2lpi, false) static cv::gapi::fluid::Border getBorder(const cv::GMatDesc &/*src*/, int borderType, cv::Scalar borderValue) { - return { borderType, to_own(borderValue)}; + return { borderType, borderValue}; } }; @@ -234,7 +234,7 @@ GAPI_FLUID_KERNEL(FBlur5x5_2lpi, TBlur5x5_2lpi, false) static cv::gapi::fluid::Border getBorder(const cv::GMatDesc &/*src*/, int borderType, cv::Scalar borderValue) { - return { borderType, to_own(borderValue )}; + return { borderType, borderValue}; } }; @@ -261,7 +261,7 @@ GAPI_FLUID_KERNEL(FIdentity, TId, false) static gapi::fluid::Border getBorder(const cv::GMatDesc &) { - return { cv::BORDER_REPLICATE, cv::gapi::own::Scalar{} }; + return { cv::BORDER_REPLICATE, cv::Scalar{} }; } }; @@ -308,7 +308,7 @@ GAPI_FLUID_KERNEL(FId7x7, TId7x7, false) static cv::gapi::fluid::Border getBorder(const cv::GMatDesc&/* src*/) { - return { cv::BORDER_REPLICATE, cv::gapi::own::Scalar{} }; + return { cv::BORDER_REPLICATE, cv::Scalar{} }; } }; diff --git a/modules/gapi/test/gapi_kernel_tests.cpp b/modules/gapi/test/gapi_kernel_tests.cpp index 6ed98ad4f4..21c6208bd3 100644 --- a/modules/gapi/test/gapi_kernel_tests.cpp +++ b/modules/gapi/test/gapi_kernel_tests.cpp @@ -6,7 +6,6 @@ #include "test_precomp.hpp" -#include #include "gapi_mock_kernels.hpp" #include // cpu::backend diff --git a/modules/gapi/test/internal/gapi_int_gmetaarg_test.cpp b/modules/gapi/test/internal/gapi_int_gmetaarg_test.cpp index d37df8f7be..81f1ad4e2d 100644 --- a/modules/gapi/test/internal/gapi_int_gmetaarg_test.cpp +++ b/modules/gapi/test/internal/gapi_int_gmetaarg_test.cpp @@ -141,7 +141,7 @@ TEST(GMetaArg, Can_Describe_RunArg) constexpr int w = 3, h = 3, c = 3; uchar data[w*h*c]; cv::gapi::own::Mat om(h, w, CV_8UC3, data); - cv::gapi::own::Scalar os; + cv::Scalar os; std::vector v; GMetaArgs metas = {GMetaArg(descr_of(m)), @@ -181,7 +181,7 @@ TEST(GMetaArg, Can_Describe_RunArgP) constexpr int w = 3, h = 3, c = 3; uchar data[w*h*c]; cv::gapi::own::Mat om(h, w, CV_8UC3, data); - cv::gapi::own::Scalar os; + cv::Scalar os; std::vector v; GMetaArgs metas = {GMetaArg(descr_of(m)), diff --git a/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp b/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp index 3a441e6ba1..3b4608cb72 100644 --- a/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp +++ b/modules/gapi/test/internal/gapi_int_gmodel_builder_test.cpp @@ -166,8 +166,8 @@ TEST(GModelBuilder, Constant_GScalar) EXPECT_EQ(9u, static_cast(g.nodes().size())); // 6 data nodes (1 -input, 1 output, 2 constant, 2 temp) and 3 op nodes EXPECT_EQ(2u, static_cast(addC_nh->inNodes().size())); // in and 3 EXPECT_EQ(2u, static_cast(mulC_nh->inNodes().size())); // addC output and c_s - EXPECT_EQ(3, (util::get(gm.metadata(s_3).get().arg))[0]); - EXPECT_EQ(5, (util::get(gm.metadata(s_5).get().arg))[0]); + EXPECT_EQ(3, (util::get(gm.metadata(s_3).get().arg))[0]); + EXPECT_EQ(5, (util::get(gm.metadata(s_5).get().arg))[0]); } TEST(GModelBuilder, Check_Multiple_Outputs)