208

I tried to use IPython.display with the following code:

from IPython.display import display, Image
display(Image(filename='MyImage.png'))

I also tried to use matplotlib with the following code:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
plt.imshow(mpimg.imread('MyImage.png'))

In both cases, nothing is displayed, not even an error message.

11 Answers 11

387

If you are using matplotlib and want to show the image in your interactive notebook, try the following:

%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('your_image.png')
imgplot = plt.imshow(img)
plt.show()
Sign up to request clarification or add additional context in comments.

8 Comments

Thank you for your answer, it almost works :-) The image is displayed, but the gray levels are replaced using a fire lut. Any idea?
Try defining the colormap explicitly: plt.imshow(lum_img, cmap="grey")
In my understanding, the last plt.show() command produces the display. Before that, you could add to the plot, e.g. by adding layers to the image. I recommend the matplotlib image tutorial as a reference: matplotlib.org/users/image_tutorial.html
Thanks for your answers, now it works perfectly! Just a little details for the potential readers, it "gray" instead of "grey".
You could avoid using matplotlib.image: img = plt.imread('your_image.png')
|
58

In a much simpler way, you can do the same using

from PIL import Image

image = Image.open('image.jpg')
image.show()

8 Comments

Thank you for your help. I've installed PIL and now it works. Any idea why the two methods I tried didn't work?
If failing to install PIL (as was the case for me), try Pillow, it worked like a charm for me.
I wonder how the import Image statement works; shouldn't it be from PIL import Image?
This solution does not necessarily close the file descriptor. Instead, use it with a context manager: with Image.open('image.jpg') as im: im.show()
What is this Image package?
|
55

If you use matplotlib, you need to show the image using plt.show() unless you are not in interactive mode. E.g.:

plt.figure()
plt.imshow(sample_image) 
plt.show()  # display it

3 Comments

Reading an other answer, I just got that I have to add plt.show() after the code I already have, instead of replacing the imshow. Thanks for your help.
I think this answers the question precisely as compared to the accepted answer.
You can get sample_image like: sample_image = plt.imread(file_path)
14

Your first suggestion works for me

from IPython.display import display, Image
display(Image(filename='path/to/image.jpg'))

4 Comments

This will always display first if there are also other plots, why is that?
not sure. I'm not an ipython expert. There are several ways to show an image as you can see from the answers here.
Image is not being displayed in ubuntu terminal, any other tab is not opened to display the image. Do you have any answer for this. But it's working on colab
This is the best answer!!
10

Using opencv-python is faster for more operation on image:

import cv2
import matplotlib.pyplot as plt

im = cv2.imread('image.jpg')
im_resized = cv2.resize(im, (224, 224), interpolation=cv2.INTER_LINEAR)

plt.imshow(cv2.cvtColor(im_resized, cv2.COLOR_BGR2RGB))
plt.show()

Comments

4

It's simple Use following pseudo code

from pylab import imread,subplot,imshow,show

import matplotlib.pyplot as plt

image = imread('...')  // choose image location

plt.imshow(image)

plt.show() // this will show you the image on console.

Comments

4

Your code:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

What it should be:

plt.imshow(mpimg.imread('MyImage.png'))
File_name = mpimg.imread('FilePath')
plt.imshow(FileName)
plt.show()

you're missing a plt.show() unless you're in Jupyter notebook, other IDE's do not automatically display plots so you have to use plt.show() each time you want to display a plot or made a change to an existing plot in follow up code.

Comments

4

Using Jupyter Notebook, the code can be as simple as the following.

%matplotlib inline
from IPython.display import Image
Image('your_image.png')

Sometimes you might would like to display a series of images in a for loop, in which case you might would like to combine display and Image to make it work.

%matplotlib inline
from IPython.display import display, Image
for your_image in your_images:
    display(Image('your_image'))

Comments

2
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))

Comments

2

Solution for Jupyter notebook PIL image visualization with arbitrary number of images:

def show(*imgs, **kwargs):
    '''Show in Jupyter notebook one or sequence of PIL images in a row. figsize - optional parameter, controlling size of the image.
    Examples:
    show(img)
    show(img1,img2,img3)
    show(img1,img2,figsize=[8,8])
    '''
    
    if 'figsize' not in kwargs:
        figsize = [9,9]
    else:
        figsize = kwargs['figsize']
    
    fig, ax = plt.subplots(1,len(imgs),figsize=figsize)
    if len(imgs)==1:
        ax=[ax]
    
    for num,img in enumerate(imgs):
        ax[num].imshow(img)
        ax[num].axis('off')
        
    tight_layout()

1 Comment

Kudos for the ax.axis('off')
0

To display images in python, you can use a tool that I made.

  1. Install python3:

    • apt install python3
  2. Clone the repo:

  3. Install python required libs:

    • cd print-image-in-terminal
    • pip3 install numpy
    • pip3 install pillow

Usage: python3 print_image.py [path to image]

Examples: python3 print_image.py sinchan.jpg

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.