diff --git a/doc/tutorials/dnn/dnn_yolo/dnn_yolo.markdown b/doc/tutorials/dnn/dnn_yolo/dnn_yolo.markdown index a5eb0a9a32..e9f446db36 100644 --- a/doc/tutorials/dnn/dnn_yolo/dnn_yolo.markdown +++ b/doc/tutorials/dnn/dnn_yolo/dnn_yolo.markdown @@ -37,7 +37,7 @@ Execute with image or video file: @code{.bash} -$ example_dnn_object_detection --config=[PATH-TO-DARKNET]/cfg/yolo.cfg --model=[PATH-TO-DARKNET]/yolo.weights --classes=object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input[PATH-TO-IMAGE-OR-VIDEO-FILE] +$ example_dnn_object_detection --config=[PATH-TO-DARKNET]/cfg/yolo.cfg --model=[PATH-TO-DARKNET]/yolo.weights --classes=object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input=[PATH-TO-IMAGE-OR-VIDEO-FILE] @endcode diff --git a/modules/core/test/test_utils.cpp b/modules/core/test/test_utils.cpp index 6e352333d9..2a1503a33c 100644 --- a/modules/core/test/test_utils.cpp +++ b/modules/core/test/test_utils.cpp @@ -261,4 +261,26 @@ TEST(AutoBuffer, allocate_test) EXPECT_EQ(6u, abuf.size()); } +TEST(CommandLineParser, testScalar) +{ + static const char * const keys3 = + "{ s0 | 3 4 5 | default scalar }" + "{ s1 | | single value scalar }" + "{ s2 | | two values scalar (default with zeros) }" + "{ s3 | | three values scalar }" + "{ s4 | | four values scalar }" + "{ s5 | | five values scalar }"; + + const char* argv[] = {"", "--s1=1.1", "--s3=1.1 2.2 3", + "--s4=-4.2 1 0 3", "--s5=5 -4 3 2 1"}; + const int argc = 5; + CommandLineParser parser(argc, argv, keys3); + EXPECT_EQ(parser.get("s0"), Scalar(3, 4, 5)); + EXPECT_EQ(parser.get("s1"), Scalar(1.1)); + EXPECT_EQ(parser.get("s2"), Scalar(0)); + EXPECT_EQ(parser.get("s3"), Scalar(1.1, 2.2, 3)); + EXPECT_EQ(parser.get("s4"), Scalar(-4.2, 1, 0, 3)); + EXPECT_EQ(parser.get("s5"), Scalar(5, -4, 3, 2)); +} + }} // namespace diff --git a/modules/dnn/include/opencv2/dnn/all_layers.hpp b/modules/dnn/include/opencv2/dnn/all_layers.hpp index 34f56169b9..e6c8e9f297 100644 --- a/modules/dnn/include/opencv2/dnn/all_layers.hpp +++ b/modules/dnn/include/opencv2/dnn/all_layers.hpp @@ -153,7 +153,7 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN */ int inputNameToIndex(String inputName); - int outputNameToIndex(String outputName); + int outputNameToIndex(const String& outputName); }; /** @brief Classical recurrent layer diff --git a/modules/dnn/include/opencv2/dnn/dnn.hpp b/modules/dnn/include/opencv2/dnn/dnn.hpp index 5605cc0749..4812bd02d3 100644 --- a/modules/dnn/include/opencv2/dnn/dnn.hpp +++ b/modules/dnn/include/opencv2/dnn/dnn.hpp @@ -222,7 +222,7 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN /** @brief Returns index of output blob in output array. * @see inputNameToIndex() */ - CV_WRAP virtual int outputNameToIndex(String outputName); + CV_WRAP virtual int outputNameToIndex(const String& outputName); /** * @brief Ask layer if it support specific backend for doing computations. @@ -704,7 +704,7 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN * @ref readNetFromTorch or @ref readNetFromDarknet. An order of @p model and @p config * arguments does not matter. */ - CV_EXPORTS_W Net readNet(String model, String config = "", String framework = ""); + CV_EXPORTS_W Net readNet(const String& model, const String& config = "", const String& framework = ""); /** @brief Loads blob which was serialized as torch.Tensor object of Torch7 framework. * @warning This function has the same limitations as readNetFromTorch(). diff --git a/modules/dnn/src/dnn.cpp b/modules/dnn/src/dnn.cpp index 63fa22d04a..d08e646b96 100644 --- a/modules/dnn/src/dnn.cpp +++ b/modules/dnn/src/dnn.cpp @@ -398,7 +398,7 @@ struct DataLayer : public Layer void forward(std::vector&, std::vector&, std::vector &) {} void forward(InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals) {} - int outputNameToIndex(String tgtName) + int outputNameToIndex(const String& tgtName) { int idx = (int)(std::find(outNames.begin(), outNames.end(), tgtName) - outNames.begin()); return (idx < (int)outNames.size()) ? idx : -1; @@ -2513,7 +2513,7 @@ int Layer::inputNameToIndex(String) return -1; } -int Layer::outputNameToIndex(String) +int Layer::outputNameToIndex(const String&) { return -1; } @@ -2805,9 +2805,11 @@ BackendWrapper::BackendWrapper(const Ptr& base, const MatShape& BackendWrapper::~BackendWrapper() {} -Net readNet(String model, String config, String framework) +Net readNet(const String& _model, const String& _config, const String& _framework) { - framework = framework.toLowerCase(); + String framework = _framework.toLowerCase(); + String model = _model; + String config = _config; const std::string modelExt = model.substr(model.rfind('.') + 1); const std::string configExt = config.substr(config.rfind('.') + 1); if (framework == "caffe" || modelExt == "caffemodel" || configExt == "caffemodel" || diff --git a/modules/dnn/src/layers/recurrent_layers.cpp b/modules/dnn/src/layers/recurrent_layers.cpp index 92e9e0e233..cfccc191b8 100644 --- a/modules/dnn/src/layers/recurrent_layers.cpp +++ b/modules/dnn/src/layers/recurrent_layers.cpp @@ -355,7 +355,7 @@ int LSTMLayer::inputNameToIndex(String inputName) return -1; } -int LSTMLayer::outputNameToIndex(String outputName) +int LSTMLayer::outputNameToIndex(const String& outputName) { if (outputName.toLowerCase() == "h") return 0;