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&lt;一起运行2意味着它运行else条件,当我转到配置设置 - &gt;调试 - &gt;命令行参数 - &gt; .\test
测试文件夹包含图像
C ++和VS的新手
答案 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 ,如何操作,您可以在提供的链接中找到。