我从openCV2本书复制此代码,此代码有argc
和argv
作为参数,我不知道它们是什么以及为什么分配给1(argc=1
)并终止调试...我的问题为什么argc=1
?我怎么解决它?因为我的argc
应为2(argc==2
)...
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main( int argc, char** argv )
{
if ( argc ! = 2 )
{
printf( " usage: DisplayImage.out <Image_Path>\n" );
return - 1;
}
Mat image;
image = imread( argv[ 1], 1 );
if ( ! image.data )
{
printf( " No image data \n" );
return - 1;
}
namedWindow( " Display Image" , WINDOW_AUTOSIZE );
imshow( " Display Image" , image);
waitKey( 0);
return 0;
}
我尝试在没有argc
和argv
的情况下编写此代码,但调试器出现运行时错误,我认为其原因为argc
。
答案 0 :(得分:0)
如果您通过命令行运行它,可以将其称为
DisplayImage "path_to_image"
如果您想从VS运行,请务必添加&#34; path_to_image&#34;在命令参数中:
确保&#34; path_to_image&#34;是一个有效的路径,请检查here以供参考。
正如评论中已经指出的那样,这是一个非常糟糕的例子! 对于更复杂的输入参数,OpenCV 3.0.0也有CommandLineParser。