程序总是返回0与argv [0]

时间:2013-09-07 10:52:08

标签: c++ visual-c++ opencv

int main ( int argc, char** argv )
{
    cout << "OpenCV Automatic Number Plate Recognition\n";
    char* filename;
    Mat input_image;
    //Check if user specify image to process
    if(argc >= 2 )
    {
        filename= argv[1];
        //load image  in gray level
        input_image=imread(filename,1);
    }else{
        printf("Use:\n\t%s image\n",argv[0]);
        return 0;
    }        

    string filename_whithoutExt=getFilename(filename);

这是代码,代码运行没有错误,但总是到这里返回0

        printf("Use:\n\t%s image\n",argv[0]);
        return 0;

为什么它没有得到那些要处理的图像

修改

当我给我的文件夹测试进行处理时,它会给出以下运行时错误:

enter image description here

它与argv&lt;一起运行2意味着它运行else条件,当我转到配置设置 - &gt;调试 - &gt;命令行参数 - &gt; .\test 测试文件夹包含图像

C ++和VS的新手

1 个答案:

答案 0 :(得分:3)

你如何运行这个程序?

如果您的程序没有参数或单个参数被调用 即:

./myprogram

./myprogram img1

它将在此结束

printf("Use:\n\t%s image\n",argv[0]);

只有在有2个或更多参数时才会进入第一个条件,即:

./myprogram img1 img2

您可以指定要在项目中调用的参数(在IDE中)或从终端/控制台运行它。

Passing command line arguments in Visual Studio 2010?


你在评论中说:

  

我希望从文件夹测试或项目中获取图像   并将它们作为输入

但与你实际做的事情相矛盾。如果你想处理文件,你可以在不检查程序调用参数的情况下进行处理(目前还不清楚为什么需要它们以及你想要实现的目标)。

目前从命令行尝试  ./myprogram img1 img2,其中img1是其中一个文件的正确名称。这将尝试执行imread()或者在IDE 中指定 img1,img2 ,如何操作,您可以在提供的链接中找到。