Image Processing in Python
Tags: python, machinelearning, programming
Published: 2021-09-18 16:10:23

## Start Tutorial
📌
In this post I am going to share some information about what image processing is. So, let's begin with the main methodology of image processing.
Firstly, we are going to start with the definition of image processing. 
<br>

❗❗ Note that this tutorial will be published as a serie hence I recommend you to read the rest of all. 

<br>

## What is image processing ?
✏
**Image processing** is the manipulation of images in digital environments💻 over some programming languages through some algorithms. We can analyze the images and also transform some properties like colour and dimensions. Apart of that we can categorize the image like RGB and Grayscale image. Also look [here](https://en.wikipedia.org/wiki/RGB_color_model)

Alright it is time to look at how can we handle that process. At this point we are going to use python. Python is one of the best programming languages to image processing so that we will use some modules of python language.


The list of modules that we will use is;
📋
- Pillow(PIL)
- OpenCV
- NumPy
- Sckit-Image

Note that some of those modules will be used less than the others.
Let's start the first of list above. <br> <br>


### 📍PIL(Pillow)

➡ Pillow is one of the most popular module to basic image processing in Python. This module is used for processing the images in its different properties and also is used so commonly by data scientists. The module provides support various image formats and also includes some popular formats like JPEG, PNG. 
<br>
Alright! We have done so far and let's go to usage of the modules.

To use Pillow we need to install before so, we can do installation via pip:

```
   pip install Pillow
``` 
or
```
   python -m pip install Pillow
```

If you have linux system then you can also use those instructions to installation as following;

```
   pip3 install Pillow
```
or
```
   python3 -m pip3 install Pillow
```

Ready to use now ! Let's go to instances of PIL.
<br>
### 📍Usage and Instances for PIL

➡ Now we have Pillow module that imported to python main. It is time to write instances. In python file we firstly import several modules from PIL that we will use. The first it is going to be Image as well.

```python
   from PIL import Image
```

Image function is imported from PIL so, we are going to use Image function by its open() module firstly. For this tutorial I have prepared linux tux image as you see below and you also are able to find source [here]. 
<!--add linux url-->

![tux.jpg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hagchgp5z1b2o6rgkug.jpg)

```python
   image = Image.open("tux.jpg")
``` 

Image is loaded now let's look at some properties of image. One of those properties is image **band**. Every image has one or more bands. To demonstrate bands of the image we use getbands() function as following.

```python
   image_bands = image.getbands()
   print(image_bands)
``` 

You probably will get output like this:

```
   ('R', 'G', 'B')
```

Another property is **mode**. Image has mode which defines the type and depth of a pixel in the image. To obtain the mode of image we are going to do as following.

```python
   image_mode = image.mode
   print(image_mode)
```

And then the output will be that string "RGB" for this image. There are some modes that Pillow provides below: 

📋
- 1
- L 
- P
- RGB 
- RGBA
- CMYK 
- YCbCr
- HSV
- I
- F 

The another property is size, it can change the size of image as you see below.

```python
   image_size = image.size
   print(image_size)
```
We got this output for image that we have used.

```
   Output:
   (1000, 1000)
```
Now we can change the size ! We do that using **resize** function.

```python 
   resized_image = image.resize((400, 400))
   resized_image.save("new_image.jpg")
```
You probably are going to see a new image called like "new_image.jpg" in the same directory with your python code file.

So far so good !

Alright it's time to use of functions that can make more complex process on the images. We are going to use some of them in second section of this serie.

The following series allows you to access the other sections.