Displaying Images in Python

Introduction

Images are a fundamental part of many applications, and Python provides several powerful libraries for handling and displaying them. This tutorial will cover common methods for displaying images within a Python environment, covering libraries such as IPython.display, matplotlib, PIL (Pillow), and opencv-python.

Using IPython.display

If you are working within an interactive environment like Jupyter Notebook or IPython, the IPython.display module offers a simple way to display images directly within the output.

from IPython.display import display, Image

# Assuming 'MyImage.png' is in the same directory
display(Image(filename='MyImage.png'))

This code loads the image MyImage.png and displays it as part of the notebook’s output. Ensure the image file exists in the specified path.

Using Matplotlib

matplotlib is a versatile plotting library that also supports image display. When working in an interactive environment (like Jupyter Notebook), you often need to include a magic command to ensure the plot is displayed inline.

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

# For Jupyter Notebook / IPython
# %matplotlib inline  # Uncomment this line if using Jupyter Notebook

img = mpimg.imread('MyImage.png')
plt.imshow(img)
plt.show()

mpimg.imread() reads the image data into an array. plt.imshow() displays the array as an image, and plt.show() renders the image. The %matplotlib inline directive (for Jupyter Notebooks) tells the notebook to display the plots within the cell output. Without it, a separate window might open.

Using PIL (Pillow)

Pillow is the Python Imaging Library, providing extensive image processing capabilities. A simple way to display an image using Pillow is:

from PIL import Image

image = Image.open('MyImage.png')
image.show()

Image.open() loads the image. image.show() opens the image in your system’s default image viewer. This is a convenient method if you want to view the image outside of a plotting environment.

Using OpenCV

OpenCV (cv2) is a powerful library for computer vision tasks. While more complex for basic image display, it offers performance benefits for more intensive image processing.

import cv2
import matplotlib.pyplot as plt

im = cv2.imread('MyImage.png')

# OpenCV reads images in BGR format, Matplotlib uses RGB. Convert to RGB.
im_rgb = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)

plt.imshow(im_rgb)
plt.show()

cv2.imread() loads the image. Note that OpenCV reads images in BGR (Blue, Green, Red) color format, while Matplotlib expects RGB. cv2.cvtColor() converts the image from BGR to RGB before displaying it using Matplotlib.

Choosing the Right Method

  • For quick display within a Jupyter Notebook, IPython.display is the simplest.
  • matplotlib provides more control over the display, including customization options for axes and labels.
  • PIL is good for basic image manipulation and displaying images in a separate viewer.
  • opencv-python is best suited for applications involving complex image processing or computer vision tasks.

Remember to install the necessary libraries using pip:

pip install matplotlib Pillow opencv-python

Leave a Reply

Your email address will not be published. Required fields are marked *