c++ - OpenCV中int main(int argc, char** argv)中argc和argv的意义

标签 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)   
    { 
     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;
}

我无法理解程序员是如何指定输入图像的。这是因为 argv[1] 只是一个数组元素,我认为与要指定的图像没有关系,并且它没有在程序中的任何地方定义。谁能解开我的疑惑?

还有一件事:在检查 if(argc !=2) 的“if”语句中检查了什么?

最佳答案

main( int argc, char** argv )
           |            |
           |            |
           |            +----pointer to supplied arguments
           +--no. of arguments given at command line (including executable name)

示例:

display_image image1.jpg

这里,

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

关于c++ - OpenCV中int main(int argc, char** argv)中argc和argv的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619547/

相关文章:

c++ - 重载输出运算符时出现错误 c2440 错误

c++ - 如何使用 STL 翻转/反转二维数组的行或列

python - 改善绘制直方图代码的运行时间

c - argv 和 char 的问题

c - windows mingw asterisk '*' 通过 argv[1] 传递给字符串

c++ - CUDA 中的随机播放指令

c++ - 数据访问对象模式实现

使用 cmake 将 OpenCV 作为外部的 C++ 项目

visual-studio-2008 - 在不同的计算机上运行 OpenCV 项目 exe

Ruby 从终端分配多个参数