首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >argc是什么意思?

argc是什么意思?
EN

Stack Overflow用户
提问于 2013-08-23 17:46:40
回答 2查看 25.9K关注 0票数 3

我不明白,OpenCV中的代码用于加载图像的功能是什么?if(argc !=2)的功能是什么?你能跟我说说吗。

代码语言:javascript
复制
 if( argc != 2)
    {
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    }

完整法典:

代码语言:javascript
复制
1 #include <opencv2/core/core.hpp>
2 #include <opencv2/highgui/highgui.hpp>
3 #include <iostream>
4
5 using namespace cv;
6 using namespace std;
7
8 int main( int argc, char** argv )
9 {
10 if( argc != 2)
11 {
12 cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
13 return -1;
14 }
15
16 Mat image;
17 image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
18
19 if(! image.data ) // Check for invalid input
20 {
21 cout << "Could not open or find the image" << std::endl ;
22 return -1;
23 }
24
25 namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
26 imshow( "Display window", image ); // Show our image inside it.
27
28 waitKey(0); // Wait for a keystroke in the window
29 return 0;
30 }
EN

回答 2

Stack Overflow用户

发布于 2013-08-23 17:49:49

对于C++ (或C、ObjC或相关语言)的任何教程都应该介绍这一点,例如the GNU tutorial

一个main程序的C++函数有两个参数,按照惯例名为argcargv,这为它提供了用于启动程序的命令行参数。

argc是参数的计数,argv是字符串的数组。

程序本身就是第一个参数,argv[0],所以argc总是至少1。

因此,当程序使用一个命令行参数运行时,argc2 .如果没有参数或多个参数运行,则argc != 2将为true,因此将打印使用消息“display_image : ImageToLoadAndDisplay”,告诉用户如何正确运行它。

例如,如果您这样做:

代码语言:javascript
复制
$ display_image firstarg "second arg"

这些价值将是:

代码语言:javascript
复制
argc: 3
argv[0]: "display_image"
argv[1]: "firstarg"
argv[2]: "second arg"

值得指出的是,代码在许多方面都很奇怪。使用消息开头的额外空间非常奇怪。“用法”通常都是小写的。您通常将实际的程序名(argv[0])放在字符串中,而不是硬编码的规范名称中。使用消息通常转到cerr,而不是cout。约定是返回一个正数来表示用户的错误,通常是两个无效的参数,而不是-1。您可以在源代码中找到更好的argc/argv处理示例,这些示例适用于在Unix命令行上使用的几乎任何工具(尽管其中大多数更为复杂,通常使用getopt之类的库来解析文件参数中的选项,等等)。

票数 24
EN

Stack Overflow用户

发布于 2013-08-23 22:18:53

  • argc =论证计数。这用于确定程序运行时使用的命令行争用数。
  • argv被称为论证向量,它包含所有命令行的名称,包括程序的名称。
  • 在您运行的任何程序中,argc总是至少为1;这是因为程序本身包含在争论计数中。因此,在您的程序中,argc必须为2,其中包括:your_programanother_file。如果argc不是2,这意味着它等于1或大于2,并且由于这不是程序想要的,所以代码将中止进一步的执行。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18408829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档