Image Manipulation

../../_images/34575689432_3de8e9a348_k_d.jpg

Most image processing and manipulation techniques can be carried out effectively using two libraries: Python Imaging Library (PIL) and Open Source Computer Vision (OpenCV).

A brief description of both is given below.

Python Imaging Library

The Python Imaging Library, or PIL for short, is one of the core libraries for image manipulation in Python. Unfortunately, its development has stagnated, with its last release in 2009.

Luckily for you, there’s an actively-developed fork of PIL called Pillow – it’s easier to install, runs on all major operating systems, and supports Python 3.

Installation

Before installing Pillow, you’ll have to install Pillow’s prerequisites. Find the instructions for your platform in the Pillow installation instructions.

After that, it’s straightforward:

$ pip install Pillow 

Example

from PIL import Image, ImageFilter #Read image im = Image.open( 'image.jpg' ) #Display image im.show() #Applying a filter to the image im_sharp = im.filter( ImageFilter.SHARPEN ) #Saving the filtered image to a new file im_sharp.save( 'image_sharpened.jpg', 'JPEG' ) #Splitting the image into its respective bands, i.e. Red, Green, #and Blue for RGB r,g,b = im_sharp.split() #Viewing EXIF data embedded in image exif_data = im._getexif() exif_data 

There are more examples of the Pillow library in the Pillow tutorial.

Open Source Computer Vision

Open Source Computer Vision, more commonly known as OpenCV, is a more advanced image manipulation and processing software than PIL. It has been implemented in several languages and is widely used.

Installation

In Python, image processing using OpenCV is implemented using the cv2 and NumPy modules. The installation instructions for OpenCV should guide you through configuring the project for yourself.

NumPy can be downloaded from the Python Package Index(PyPI):

$ pip install numpy 

Example

import cv2 #Read Image img = cv2.imread('testimg.jpg') #Display Image cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() #Applying Grayscale filter to image gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Saving filtered image to new file cv2.imwrite('graytest.jpg',gray) 

There are more Python-implemented examples of OpenCV in this collection of tutorials.