Merge pull request #15312 from smirnov-alexey:gapi_fluid_garray
* Support GArray as input in fluid kernels * Create tests on GArray input in fluid * Some fixes to fully support GArray * Refactor code and change the kernel according to review * Add histogram calculation as a G-API kernel Add assert that input GArgs in fluid contain at least one GMat
This commit is contained in:
committed by
Alexander Alekhin
parent
e98e58c65a
commit
8a7e74673e
@@ -1229,6 +1229,7 @@ void cv::gimpl::GFluidExecutable::bindInArg(const cv::gimpl::RcDesc &rc, const G
|
||||
{
|
||||
case GShape::GMAT: m_buffers[m_id_map.at(rc.id)].priv().bindTo(util::get<cv::gapi::own::Mat>(arg), true); break;
|
||||
case GShape::GSCALAR: m_res.slot<cv::gapi::own::Scalar>()[rc.id] = util::get<cv::gapi::own::Scalar>(arg); break;
|
||||
case GShape::GARRAY: m_res.slot<cv::detail::VectorRef>()[rc.id] = util::get<cv::detail::VectorRef>(arg); break;
|
||||
default: util::throw_error(std::logic_error("Unsupported GShape type"));
|
||||
}
|
||||
}
|
||||
@@ -1254,7 +1255,8 @@ void cv::gimpl::GFluidExecutable::bindOutArg(const cv::gimpl::RcDesc &rc, const
|
||||
void cv::gimpl::GFluidExecutable::packArg(cv::GArg &in_arg, const cv::GArg &op_arg)
|
||||
{
|
||||
GAPI_Assert(op_arg.kind != cv::detail::ArgKind::GMAT
|
||||
&& op_arg.kind != cv::detail::ArgKind::GSCALAR);
|
||||
&& op_arg.kind != cv::detail::ArgKind::GSCALAR
|
||||
&& op_arg.kind != cv::detail::ArgKind::GARRAY);
|
||||
|
||||
if (op_arg.kind == cv::detail::ArgKind::GOBJREF)
|
||||
{
|
||||
@@ -1263,6 +1265,10 @@ void cv::gimpl::GFluidExecutable::packArg(cv::GArg &in_arg, const cv::GArg &op_a
|
||||
{
|
||||
in_arg = GArg(m_res.slot<cv::gapi::own::Scalar>()[ref.id]);
|
||||
}
|
||||
else if (ref.shape == GShape::GARRAY)
|
||||
{
|
||||
in_arg = GArg(m_res.slot<cv::detail::VectorRef>()[ref.id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -128,7 +128,7 @@ class GFluidExecutable final: public GIslandExecutable
|
||||
|
||||
std::vector<FluidAgent*> m_script;
|
||||
|
||||
using Magazine = detail::magazine<cv::gapi::own::Scalar>;
|
||||
using Magazine = detail::magazine<cv::gapi::own::Scalar, cv::detail::VectorRef>;
|
||||
Magazine m_res;
|
||||
|
||||
std::size_t m_num_int_buffers; // internal buffers counter (m_buffers - num_scratch)
|
||||
|
||||
Reference in New Issue
Block a user