将argv和argc作为数组传递给main

时间:2017-05-03 18:15:07

标签: c++ opencv command-line

我正在使用opencv,并且有一个接受命令行变量的函数:

int start(int argc, char** argv)
{
    cv::CommandLineParser parser(argc, argv, keys);
    if(parser.has("help")) {
        parser.printMessage();
        return 0;
    }
....

}

我想要做的是,有另一个函数将变量传递给这个,而不是像现在这样使用命令行。 我传递它以完美运行的命令行是:

-h=6 -w=8 -pf=defaultConfig.xml -t=charuco -v=bmCalib2.mov -sz=0.045 -d=1

所以我有这个功能:

void main()
{
char* passArg[7] = { "-h=6", "-w=8","-pf=defaultConfig.xml", "-t=charuco","-v=bmCalib2.mov", "-sz=0.045", " -d=1" };
        start(7,passArg);
}

它编译并运行,但结果不同(它是校准应用程序,命令行校准,功能版本没有)。

这是发送int argc, char** argv而不是使用命令行的正确方法吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

啊,已经解决了。我需要将我的char数组调整为:

char* passArg[8] = { NULL,"-h=6", "-w=8","-pf=defaultConfig.xml", "-t=charuco","-v=bmCalib2.mov", "-sz=0.045", " -d=3" };

显然.exe通常是命令行启动时给出的第一个变量。