Ethan

Posted on

# Creating more filters with OpenCV and Python

## Introduction

Hello! ๐

In this tutorial I will be showcasing some more filters using OpenCV and Python!
This is a continuation of my previous example which can be found here:
https://dev.to/ethand91/creating-various-filters-with-opencvpython-3077

I've already discussed how to create the virtual environment in previous tutorials so I will skip that part.

Well lets get started creating some more filters! ๐ฅณ

## Vignette Filter

First we will create the vignette filter. The vignette filter is achieved by creating a broad 2D Gaussian kernel.

``````def vignette(image, level = 2):
height, width = image.shape[:2]

x_resultant_kernel = cv2.getGaussianKernel(width, width/level)
y_resultant_kernel = cv2.getGaussianKernel(height, height/level)

kernel = y_resultant_kernel * x_resultant_kernel.T

image_vignette = np.copy(image)

for i in range(3):

return image_vignette
``````

Here we generate the vignette mask using Gaussian kernels, we then generate the result matrix and then apply the mask to each of the image's color channels.

## Embossed Filter

The next filter is the embossed filter:

``````def embossed_edges(image):

kernel = np.array([[0, -3, -3], [3, 0, -3], [3, 3, 0]])

image_emboss = cv2.filter2D(image, -1, kernel = kernel)

return image_emboss
``````

Here we create an array for each of the channels and then apply it to the image via filter2D.

## Outline Filter

The next filter is the outline filter:

``````def outline(image, k = 9):
k = max(k, 9)
kernel = np.array([[-1, -1, -1], [-1, k, -1], [-1, -1, -1]])

image_outline = cv2.filter2D(image, ddepth = -1, kernel = kernel)

return image_outline
``````

Similar to the embossed filter but this time we increase the quality of the outlines.

## Style Filter

The final filter is one of my personal favorites, the style filter.

``````def style(image):
image_blur = cv2.GaussianBlur(image, (5, 5), 0, 0)
image_style = cv2.stylization(image_blur, sigma_s = 40, sigma_r = 0.1)

return image_style
``````

This filter is really cool IMO.
Before calling stylization it's best to blur the image a bit for better results.

## Conclusion

Here I have shown how to create more various filters with opencv/python. I hope this tutorial was useful to you.

If you have any cool filters please share them. ๐

The source code and the original image can be found via:
https://github.com/ethand91/python-opencv-filters

Like me work? I post about a variety of topics, if you would like to see more please like and follow me.
Also I love coffee.