.. _Display_Image: Display an Image ***************** Goal ===== In this tutorial you will learn how to: * Load an image using :imread:`imread <>` * Create a named window (using :named_window:`namedWindow <>`) * Display an image in an OpenCV window (using :imshow:`imshow <>`) Code ===== Here it is: .. code-block:: cpp #include #include using namespace cv; int main( int argc, char** argv ) { Mat image; image = imread( argv[1], 1 ); if( argc != 2 || !image.data ) { printf( "No image data \n" ); return -1; } namedWindow( "Display Image", CV_WINDOW_AUTOSIZE ); imshow( "Display Image", image ); waitKey(0); return 0; } Explanation ============ #. .. code-block:: cpp #include #include using namespace cv; These are OpenCV headers: * *cv.h* : Main OpenCV functions * *highgui.h* : Graphical User Interface (GUI) functions Now, let's analyze the *main* function: #. .. code-block:: cpp Mat image; We create a Mat object to store the data of the image to load. #. .. code-block:: cpp image = imread( argv[1], 1 ); Here, we called the function :imread:`imread <>` which basically loads the image specified by the first argument (in this case *argv[1]*). The second argument is by default. #. After checking that the image data was loaded correctly, we want to display our image, so we create a window: .. code-block:: cpp namedWindow( "Display Image", CV_WINDOW_AUTOSIZE ); :named_window:`namedWindow <>` receives as arguments the window name ("Display Image") and an additional argument that defines windows properties. In this case **CV_WINDOW_AUTOSIZE** indicates that the window will adopt the size of the image to be displayed. #. Finally, it is time to show the image, for this we use :imshow:`imshow <>` .. code-block:: cpp imshow( "Display Image", image ) #. Finally, we want our window to be displayed until the user presses a key (otherwise the program would end far too quickly): .. code-block:: cpp waitKey(0); We use the :wait_key:`waitKey <>` function, which allow us to wait for a keystroke during a number of milliseconds (determined by the argument). If the argument is zero, then it will wait indefinitely. Result ======= * Compile your code and then run the executable giving a image path as argument: .. code-block:: bash ./DisplayImage HappyFish.jpg * You should get a nice window as the one shown below: .. image:: images/Display_Image_Tutorial_Result.png :alt: Display Image Tutorial - Final Result :align: center