From 7c4158d8c2efc302f58e84f43e13743172d8020a Mon Sep 17 00:00:00 2001 From: Dimitri Gerin Date: Wed, 6 Nov 2019 21:05:35 +0300 Subject: [PATCH] Fix dnn::getLayerInputs --- modules/dnn/src/dnn.cpp | 9 +++------ modules/dnn/test/test_misc.cpp | 2 ++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/dnn/src/dnn.cpp b/modules/dnn/src/dnn.cpp index ad2cd73807..f134cf6813 100644 --- a/modules/dnn/src/dnn.cpp +++ b/modules/dnn/src/dnn.cpp @@ -3189,14 +3189,11 @@ Ptr Net::getLayer(LayerId layerId) std::vector > Net::getLayerInputs(LayerId layerId) { LayerData &ld = impl->getLayerData(layerId); - if (!ld.layerInstance) - CV_Error(Error::StsNullPtr, format("Requested layer \"%s\" was not initialized", ld.name.c_str())); std::vector > inputLayers; - inputLayers.reserve(ld.inputLayersId.size()); - std::set::iterator it; - for (it = ld.inputLayersId.begin(); it != ld.inputLayersId.end(); ++it) { - inputLayers.push_back(getLayer(*it)); + inputLayers.reserve(ld.inputBlobsId.size()); + for (int i = 0; i < ld.inputBlobsId.size(); ++i) { + inputLayers.push_back(getLayer(ld.inputBlobsId[i].lid)); } return inputLayers; } diff --git a/modules/dnn/test/test_misc.cpp b/modules/dnn/test/test_misc.cpp index e2a6af735b..3e72cfe58e 100644 --- a/modules/dnn/test/test_misc.cpp +++ b/modules/dnn/test/test_misc.cpp @@ -86,6 +86,8 @@ TEST_P(dump, Regression) Net net = readNet(findDataFile("dnn/squeezenet_v1.1.prototxt"), findDataFile("dnn/squeezenet_v1.1.caffemodel", false)); + ASSERT_EQ(net.getLayerInputs(net.getLayerId("fire2/concat")).size(), 2); + int size[] = {1, 3, 227, 227}; Mat input = cv::Mat::ones(4, size, CV_32F); net.setInput(input);