title: Significance of argc and argv in int main( int argc, char** argv ) in OpenCV
body: <p>In the following program for loading and displaying image in openCV</p>
  
  <pre><code>#include &lt;opencv2/core/core.hpp&gt;   
  #include &lt;opencv2/highgui/highgui.hpp&gt;  
  #include &lt;iostream&gt;
  
  using namespace cv;  
  using namespace std;
  
  int main( int argc, char** argv )  
  {  
      if( argc != 2)   
      { 
       cout &lt;&lt;" Usage: display_image ImageToLoadAndDisplay" &lt;&lt; endl;
       return -1;
      }
  
      Mat image;
      image = imread(argv[1], CV_LOAD_IMAGE_COLOR);   // Read the file
  
      if(! image.data )                              // Check for invalid input
      {
          cout &lt;&lt;  "Could not open or find the image" &lt;&lt; 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;
  }
  </code></pre>
  
  <p>I am not able to understand how the programmer is specifying the input image. This is because argv[1] is just an array element and I think has no relation to the image to be specified, and it hasn't been defined anywhere in the program. Can anybody clear my doubts?</p>
  
  <p>One more thing: What is being checked in the "if" statement that checks if(argc !=2)?  </p>