diff --git a/modules/dnn/src/layers/permute_layer.cpp b/modules/dnn/src/layers/permute_layer.cpp index 871c6779e1..fcebc9bb66 100644 --- a/modules/dnn/src/layers/permute_layer.cpp +++ b/modules/dnn/src/layers/permute_layer.cpp @@ -117,7 +117,10 @@ public: std::vector &internals) const { if(!_needsPermute) + { + Layer::getMemoryShapes(inputs, requiredOutputs, outputs, internals); return true; + } CV_Assert(inputs.size() > 0); CV_Assert((int)_numAxes == inputs[0].size()); @@ -253,7 +256,11 @@ public: if(!_needsPermute) { for (k = 0; k < ninputs; k++) - outputs[k] = *inputs[k]; + { + CV_Assert(outputs[k].total() == inputs[k]->total()); + if (outputs[k].data != inputs[k]->data) + inputs[k]->copyTo(outputs[k]); + } } else {