import cv2 %matplotlib notebook from matplotlib import pyplot as plt
/usr/local/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment. warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
Matplotlib is a 2D plotting aimed to interactive computing and publication-quality image generation. It is a more powerful tool to display images than the standard OpenCV utilities. Interactive zooming, interpolation, automatic scaling and floating point array visualization are Matplotlib features that are not available in OpenCV. It also provides a large set of plotting tools, similar to R and Matlab, including line plots, scatter plots, bar plots, histograms and vector.
Matplotlib’s maintainers keep a gallery of plotting examples. Users can pick the desired plot from the gallery and inspect its source code, using it as a template or starting point for their own graphics.
imshowfunctions presents very limited capabilities
imshowis a more capable visualization tool
OpenCV presents an
imshow function that lets the user display an image in a graphic window. It can show standard 8 bits color or grayscale images, but different data types need adaptions. For 16 bits and 32 bits integers, the pixels values are divided by 256, mapping a $[0, 65280]$ range to $[0, 255]$ before displaying. For 32 bits floating-point images, values are multiplied by 255, what maps the value range $[0, 1]$ to $[0, 255]$. Zooming is not supported and high-resolution images are not be fitted to the computer’s screen, making the visualization of large images inconvenient. Remote sensing data or high-resolution photographies usually needs some sort of scaling before displaying.
Matplotlib presents its own
imshow function, able to display NumPy arrays as images. Differently of the OpenCV counterpart, this function is a more capable tool for scientific visualization. Images are fitted to the plotting window according to different interpolation methods (bilinear, bicubic, sinc and Lanczos, to name just a few). Interactive zooming is available, a convenient feature when the user is inspecting the results of image processing routines. Matplotlib is able to show color images in the form of $M \times N \times 3$ RGB arrays (floating point or integer data types) or $M \times N \times 4$ RGBA arrays presenting an alpha channel. Bidimensional $M \times N$ arrays (as integer or floating point grayscale images) are exhibited using a colormap automatically fitted to the array range. The
colorbar function can be used to plot a bar that illustrates the color/value mapping employed.
lenna = cv2.cvtColor(cv2.imread('data/lenna.tiff'), cv2.COLOR_BGR2RGB) plt.imshow(lenna)
<matplotlib.image.AxesImage at 0x7fe1c82c9b50>
Bilinear interpolation (default),
cm.jet colormap (default):
slenna = cv2.imread('data/lenna.tiff', cv2.IMREAD_GRAYSCALE) plt.imshow(slenna) plt.colorbar()