-1
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;

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

编辑

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

在此处输入图像描述

它以 argv < 2 运行意味着它运行 else 条件,当我转到配置设置 -> 调试 -> 命令行参数 ->.\test 测试文件夹包含图像时

C++ 和 VS 的新手

4

1 回答 1

3

你如何运行这个程序?

如果您的程序在没有参数或单个参数的情况下被调用,即:

./myprogram

或者 ./myprogram img1

它会在这里结束

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

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

./myprogram img1 img2

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

在 Visual Studio 2010 中传递命令行参数?


你在评论中说:

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

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

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

于 2013-09-07T11:00:48.443 回答