   ### Python NumPy »

My Coding > Programming language > Python > Python libraries and packages > Python NumPy

# Python NumPy (Page: 3)

Go to Page:

## NumPy image manipulations

NumPy array can work with standard images. Let’s consider some examples. First of all, we need to have few libraries available:

• numpy - Munpy array library itself
• matplotlib.pyplot - is a state-based interface to matplotlib. It provides a MATLAB-like way of plotting.
• scipy - The SciPy library is one of the core packages that make up the SciPy stack. It provides many user-friendly and efficient numerical routines, such as routines for numerical integration, interpolation, optimization, linear algebra, and statistics.
And we also have a picture of lovely fish, which will be our experimental picture! Fish picture for NumPy demoThis is a picture of Sparisoma aurofrenatum or  rainbow parrot fish from Wikipedia Original image: 750 x 335

### Read image with NumPy

First of all we will read image into NumPy array with ndimage function, check parameters of this image and display it with Python matplotlib.pyplot library

``````
import numpy as np
import matplotlib.pyplot as plt
from scipy import ndimage

img_array = ndimage.imread('22_fish.jpg') # read image into NumPy array
print(img_array.shape)                    # (335, 750, 3) y=335, x=750
# 3 layers for R, G and B colours
# B&W image have only one colour layer
print(type(img_array))                    #
plt.imshow(img_array)                     # convert into displayable format
plt.show()                                # display image`````` Fish picture displayed with matplotlib.pyplot libraryFish picture displayed with matplotlib.pyplot library in our script Original image: 634 x 385

In all following scripts, we are assuming, that we load all necessary libraries and already read image into ‘img_array’

### Image slicing

We can slice our array and every slice will be a part of our image. Just with standard slicing tools

``````
sliced = img_array[200:, 350:, :]
plt.imshow(sliced)
plt.show()`````` Image slicingDisplay slice [200:, 350:, :], from 200 to 335 by Y, from 350 to 750 by X and all colours Original image: 584 x 254

### Image mirroring

Using these slices we can mirroring image along X or Y axes, or both

``````
x_mirror = img_array[::-1, :, :]
plt.imshow(x_mirror)
plt.show()`````` Image mirroringImage mirroring over X axis by slice with negative step Original image: 583 x 280

### Simple Image compression

Using step for slicing bigger than 1 we can make compression along this axis by removing some parts of the image. This compression will loose some data, so it will be not very accurate. For more accurate compression we need to recalculate average colours as well.

``````
x_compress = img_array[:, ::3, :]
plt.imshow(x_compress)
plt.show()`````` Image compressionSimple 3 fold image compression along X axis but taking [:, ::3, :] slice

### Array splitting

It is also possible to split array into few other arrays with ‘split’ function. Axis- show the direction of splitting. Value 0 can be ommited.

``````
y = np.split(img_array, 5, axis=0)
plt.imshow(y)
plt.show()`````` 1/5 of imageDisplaying slice of image over Y axis. Original image: 548 x 113

### Array concatenation

Splited as an array image can be concatenated back. Furthermore – it can be concatenated in different order which will result in changing slices.

In this example we will split colour axis and then concatenate only one colour – this will give us Back&White image for only one colour from palette. Let’s try to make B&W over Green colour of this fish.

``````
z = np.split(img_array, 3, axis=2)
plt.imshow(np.concatenate((z,z,z), axis=2))
plt.show()`````` Monochrome imageRed and Blue colour layers are removed and Green turns into Black and White colour Original image: 562 x 282

Go to Page: 1; 2; 3; 4; 5; 6;

Published: 2021-10-04 11:48:19
Updated: 2021-11-14 08:41:55

### 9 popular artitles

© 2020 MyCoding.uk -My blog about coding and further learning. This blog was writen with pure Perl and front-end output was performed with TemplateToolkit. 