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
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;
// 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"},
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);
}