Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV中int main(int argc,char**argv)中argc和argv的重要性_C++_Opencv_Argv_Argc - Fatal编程技术网

C++ OpenCV中int main(int argc,char**argv)中argc和argv的重要性

C++ OpenCV中int main(int argc,char**argv)中argc和argv的重要性,c++,opencv,argv,argc,C++,Opencv,Argv,Argc,在以下程序中,用于在openCV中加载和显示图像 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, char** argv ) { if( argc != 2)

在以下程序中,用于在openCV中加载和显示图像

#include <opencv2/core/core.hpp>   
#include <opencv2/highgui/highgui.hpp>  
#include <iostream>

using namespace cv;  
using namespace std;

int main( int argc, char** argv )  
{  
    if( argc != 2)   
    { 
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    }

    Mat image;
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR);   // Read the file

    if(! image.data )                              // Check for invalid input
    {
        cout <<  "Could not open or find the image" << std::endl ;
        return -1;
    }

    namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
    imshow( "Display window", image );                   // Show our image inside it.

    waitKey(0);                                          // Wait for a keystroke in the window
    return 0;
}
#包括
#包括
#包括
使用名称空间cv;
使用名称空间std;
int main(int argc,字符**argv)
{  
如果(argc!=2)
{ 
库特
例如:

display_image image1.jpg
这里,


该程序将通过一个指定文件名的参数从命令行调用:

$ display_image filename.jpg

在这种情况下,
argv[1]
将是一个指向字符串“filename.jpg”的指针。

当用户从命令行界面运行程序时,他们可以在键入程序名后指定文件路径:
imdisplay image.jpg

argc
包含总参数数,包括程序名。因此,如果用户未键入图像名,则
argc
为1。
argv
是大小为
argc
char*
的数组。因此
argv[0]
是用户键入的程序名,
argc[1]
是第一个参数


if(argc!=2)
将在用户错误使用程序时发生。

如果您使用的是Visual Studio

argv[1]对应于[项目属性]->[配置属性]->[Debug]


它可以设置图像名称和地址

谢谢你的回复…但是我什么时候必须写“display_image iamge1.jpg”,我的意思是我们要在程序中编写它吗???@venus编译和链接程序时,它将生成一个与
.cpp
文件同名的可执行文件。在终端(linux上)使用
/display\u image image1.jpg
或在命令提示符(windows上)使用
display\u image.exe image1.jpg
。有关更多详细信息,请单击google“如何在c++中使用命令行参数”@POW感谢您的指导…它很有效…再次感谢您的回复…但您所说的程序名是什么意思,它是项目中的.cpp文件名吗(即在Eclipse中)。我必须在哪里写imdisplay image.jpg???谢谢你的回答…但是文件名意味着什么…是图像名吗?我使用的是Eclipse,所以,我可以使用命令行界面吗?。如果我的问题听起来很傻,请原谅我打扰你。是的,这是一个命令行程序,你可以通过键入程序名,然后键入您要处理的文件。恐怕我对Eclipse一无所知,但我希望它能够为目标程序指定命令行参数。请参阅
argc will be 2
argv[0] points to display_image
argv[1] points to image1

if(argc !=2 )
   ^^ Checks whether no. of supplied argument is not exactly two
$ display_image filename.jpg