Display an image with Python

Question:

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.

Asked By: FiReTiTi

||

Answers:

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
Answered By: MaxPowers

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

from PIL import Image

image = Image.open('image.jpg')
image.show()
Answered By: the_unknown_spirit

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()
Answered By: Joe Bathelt

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()
Answered By: Qhan

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.

Answered By: Ayush Srivastava

Your first suggestion works for me

from IPython.display import display, Image
display(Image(filename='path/to/image.jpg'))
Answered By: Harry Moreno

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.

Answered By: Rohit Madan
import IPython.display as display
from PIL import Image
image_path = 'my_image.jpg'
display.display(Image.open(image_path))
Answered By: Rajan saha Raju

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'))
Answered By: Fei Yao

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()
Answered By: Apogentus

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

Answered By: Pausi
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.