From: Maxim Pashchenkov Date: Tue, 1 Jun 2021 14:42:44 +0000 (+0300) Subject: Merge pull request #20157 from mpashchenkov:mp/ocv-gapi-pnetworks X-Git-Tag: submit/tizen/20220120.021815~1^2~57 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2610724ee00a014d206bc04d8969c935ca627630;p=platform%2Fupstream%2Fopencv.git Merge pull request #20157 from mpashchenkov:mp/ocv-gapi-pnetworks G-API: Python. Wrapper for networks. * Python networks * Added pyopencv_to * Changed work with pyopencv_to --- diff --git a/modules/gapi/include/opencv2/gapi/infer.hpp b/modules/gapi/include/opencv2/gapi/infer.hpp index 6e71f59df9..7ba3a44881 100644 --- a/modules/gapi/include/opencv2/gapi/infer.hpp +++ b/modules/gapi/include/opencv2/gapi/infer.hpp @@ -693,6 +693,14 @@ template cv::gapi::GNetPackage networks(Args&&... args) { return cv::gapi::GNetPackage({ cv::detail::strip(args)... }); } + +inline cv::gapi::GNetPackage& operator += ( cv::gapi::GNetPackage& lhs, + const cv::gapi::GNetPackage& rhs) { + lhs.networks.reserve(lhs.networks.size() + rhs.networks.size()); + lhs.networks.insert(lhs.networks.end(), rhs.networks.begin(), rhs.networks.end()); + return lhs; +} + } // namespace gapi } // namespace cv diff --git a/modules/gapi/misc/python/pyopencv_gapi.hpp b/modules/gapi/misc/python/pyopencv_gapi.hpp index 3ade7aaa4e..6b782cfc8d 100644 --- a/modules/gapi/misc/python/pyopencv_gapi.hpp +++ b/modules/gapi/misc/python/pyopencv_gapi.hpp @@ -756,6 +756,23 @@ static PyObject* pyopencv_cv_gapi_kernels(PyObject* , PyObject* py_args, PyObjec return pyopencv_from(pkg); } +static PyObject* pyopencv_cv_gapi_networks(PyObject*, PyObject* py_args, PyObject*) +{ + using namespace cv; + gapi::GNetPackage pkg; + Py_ssize_t size = PyTuple_Size(py_args); + for (int i = 0; i < size; ++i) + { + gapi_ie_PyParams params; + PyObject* item = PyTuple_GetItem(py_args, i); + if (pyopencv_to(item, params, ArgInfo("PyParams", false))) + { + pkg += gapi::networks(params); + } + } + return pyopencv_from(pkg); +} + static PyObject* pyopencv_cv_gapi_op(PyObject* , PyObject* py_args, PyObject*) { using namespace cv; @@ -916,6 +933,7 @@ struct PyOpenCV_Converter> // extend cv.gapi methods #define PYOPENCV_EXTRA_METHODS_GAPI \ {"kernels", CV_PY_FN_WITH_KW(pyopencv_cv_gapi_kernels), "kernels(...) -> GKernelPackage"}, \ + {"networks", CV_PY_FN_WITH_KW(pyopencv_cv_gapi_networks), "networks(...) -> GNetPackage"}, \ {"__op", CV_PY_FN_WITH_KW(pyopencv_cv_gapi_op), "__op(...) -> retval\n"}, diff --git a/modules/gapi/misc/python/shadow_gapi.hpp b/modules/gapi/misc/python/shadow_gapi.hpp index bb82002069..40dab41581 100644 --- a/modules/gapi/misc/python/shadow_gapi.hpp +++ b/modules/gapi/misc/python/shadow_gapi.hpp @@ -58,7 +58,6 @@ namespace cv namespace gapi { - GAPI_EXPORTS_W gapi::GNetPackage networks(const cv::gapi::ie::PyParams& params); namespace wip { class GAPI_EXPORTS_W IStreamSource { }; diff --git a/modules/gapi/samples/face_detection_mtcnn.cpp b/modules/gapi/samples/face_detection_mtcnn.cpp index b1944dd3fc..2db7517296 100644 --- a/modules/gapi/samples/face_detection_mtcnn.cpp +++ b/modules/gapi/samples/face_detection_mtcnn.cpp @@ -496,13 +496,6 @@ static inline std::tuple run_mtcnn_p(cv::GMat &in, const std return std::make_tuple(regressions, scores); } -//Operator fot PNet network package creation in the loop -inline cv::gapi::GNetPackage& operator += (cv::gapi::GNetPackage& lhs, const cv::gapi::GNetPackage& rhs) { - lhs.networks.reserve(lhs.networks.size() + rhs.networks.size()); - lhs.networks.insert(lhs.networks.end(), rhs.networks.begin(), rhs.networks.end()); - return lhs; -} - static inline std::string get_pnet_level_name(const cv::Size &in_size) { return "MTCNNProposal_" + std::to_string(in_size.width) + "x" + std::to_string(in_size.height); }