diff --git a/modules/dnn/src/layers/reduce_layer.cpp b/modules/dnn/src/layers/reduce_layer.cpp index 30f8139c25..22bf6bd327 100644 --- a/modules/dnn/src/layers/reduce_layer.cpp +++ b/modules/dnn/src/layers/reduce_layer.cpp @@ -131,6 +131,16 @@ public: return false; } + virtual void getTypes(const std::vector& inputs, + const int requiredOutputs, + const int requiredInternals, + std::vector& outputs, + std::vector& internals) const CV_OVERRIDE + { + CV_CheckType(inputs[0], inputs[0] == CV_32F || inputs[0] == CV_32S || inputs[0] == CV_64S || inputs[0] == CV_16F || inputs[0] == CV_8U, ""); + outputs.assign(1, inputs[0]); + } + template class ReduceBase { public: @@ -491,6 +501,7 @@ public: switch (type) { case CV_8U: opDispatch(std::forward(args)...); break; case CV_32S: opDispatch(std::forward(args)...); break; + case CV_64S: opDispatch(std::forward(args)...); break; case CV_32F: opDispatch(std::forward(args)...); break; default: CV_Error(cv::Error::BadDepth, "DNN/Reduce: Unsupported type."); } diff --git a/modules/dnn/src/layers/tile_layer.cpp b/modules/dnn/src/layers/tile_layer.cpp index abaf96bd4a..72a59e62c1 100644 --- a/modules/dnn/src/layers/tile_layer.cpp +++ b/modules/dnn/src/layers/tile_layer.cpp @@ -53,6 +53,15 @@ public: return false; } + void getTypes(const std::vector& inputs, + const int requiredOutputs, + const int requiredInternals, + std::vector& outputs, + std::vector& internals) const CV_OVERRIDE + { + outputs.assign(requiredOutputs, inputs[0]); + } + void forward(InputArrayOfArrays inputs_arr, OutputArrayOfArrays outputs_arr, OutputArrayOfArrays internals_arr) CV_OVERRIDE { CV_TRACE_FUNCTION();