【问题标题】:CommandLineParser does not accept arguments with minus characters insideCommandLineParser 不接受内部带有减号的参数
【发布时间】:2021-08-03 17:20:03
【问题描述】:

这是我的main.cpp源代码:

#include <iostream>
#include <string>
using namespace std;

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;

const char* keys = {
    "{@command  ||}"
    "{@input    ||}"
    "{@argument ||}"
};

int main(int argc, const char** argv) {
    CommandLineParser parser(argc, argv, keys);

    String param0 = parser.get<String>(0);
    String param1 = parser.get<String>(1);
    String param2 = parser.get<String>(2);

    cout << param0 << " | " << param1 << " | " << param2;

    return 0;
}

当我像这样运行这段代码时:

./main --bright ./image.png -10

我希望输出是:

--bright | ./image.png | -10

但输出是:

./image.png |  |

我不知道如何解决它。请帮帮我,谢谢。

【问题讨论】:

  • 可能是您的 shell 在命令行上使用 | 的问题。

标签: c++ opencv


【解决方案1】:

您可以在开始之前查看CommandLineParser 文档。

如果您只是将这 3 行更改为以下一行,您将获得所需的输出:

cv::String param0 = cv::String(argv[1]);
cv::String param1 = cv::String(argv[2]);
cv::String param2 = cv::String(argv[3]);

其实argv是一个数组,里面存放着你在终端输入的所有命令单元。

【讨论】:

  • 这只是规避 OpenCV 的CommandLineParser。它没有解释如何with CommandLineParser. 实现所需的行为
猜你喜欢
  • 2021-07-22
  • 1970-01-01
  • 2017-05-26
  • 2011-01-02
  • 2018-09-23
  • 2017-12-22
  • 2012-10-13
  • 2021-01-02
  • 1970-01-01
相关资源
最近更新 更多