Converting An Image To A Cartoon Using OpenCV

Computer vision is one of the hottest fields in Artificial Intelligence with a wide variety of applications. OpenCV is the most popular library used in computer vision with a lot of interesting stuff. If you want to start your journey in computer vision you can start from learning OpenCV. It is easy to understand and implement by everyone. In this article using OpenCV, let’s have fun with converting normal images into cartoons.

We will cover the following steps in this article to convert the image to cartoon:-

  1. Importing libraries
  2. Reading the input image
  3. Detecting edges in the image
  4. Converting into grayscale & applying the medium blur
  5. Cartoonifying the image

Converting Image to Cartoon Using OpenCV

Now, let us proceed step-by-step.

THE BELAMY

Sign up for your weekly dose of what's up in emerging technology.

Step-1: Reading the libraries

Here we are importing the required libraries. If you are working in Google Colab then we need to import google.colab.patches.

#Importing required libraries
import cv2
import numpy as np
from google.colab.patches import cv2_imshow

Step-2: Reading the image

In this step, we will read the image. We have download an image if Virat Kohli from Google Image and will try to perform our experiment on this image.

#Reading image 
img = cv2.imread("/content/virat.jpeg")
from skimage import io 
io.imshow(img)

As we can see that the input image read by OpenCV is being shown as a BGR (Blue-Green-Red) image so we need to convert it to the RGB (Red-Green-Blue).

#Converting to RGB
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
io.imshow(img)

Step-3: Detecting edges

Here we are going to detect the edges in the image using adaptive thresholding methods.

#Detecting edges of the input image
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 5)
edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9)
io.imshow(edges)
images to cartoon

Step-4: Cartoonifying image

In this step, we will be cartoonifying the image using bilateral filter method.

#Cartoonifying the image
color = cv2.bilateralFilter(img, 9, 250, 250)
cartoon = cv2.bitwise_and(color, color, mask=edges)

Step-5: Final Output (Cartoon Image)

Finally, we will visualize the final output

io.imshow(cartoon)

images to cartoon

The transformation from input to output

images to cartoon
images to cartoon

Conclusion

In the above demonstration, we converted a normal image into a cartoon by implementing a few lines of code using computer vision techniques. we shall have great fun using computer vision techniques.

The complete code of this implementation is available on AIM’s GitHub repository. Please go through this link to find the notebook.

More Great AIM Stories

Prudhvi varma
AI enthusiast, Currently working with Analytics India Magazine. I have experience of working with Machine learning, Deep learning real-time problems, Neural networks, structuring and machine learning projects. I am a Computer Vision researcher and I am Interested in solving real-time computer vision problems.

Our Upcoming Events

Conference, in-person (Bangalore)
Machine Learning Developers Summit (MLDS) 2023
19-20th Jan, 2023

Conference, in-person (Bangalore)
Rising 2023 | Women in Tech Conference
16-17th Mar, 2023

Conference, in-person (Bangalore)
Data Engineering Summit (DES) 2023
27-28th Apr, 2023

Conference, in-person (Bangalore)
MachineCon 2023
23rd Jun, 2023

Conference, in-person (Bangalore)
Cypher 2023
20-22nd Sep, 2023

3 Ways to Join our Community

Whatsapp group

Discover special offers, top stories, upcoming events, and more.

Discord Server

Stay Connected with a larger ecosystem of data science and ML Professionals

Subscribe to our newsletter

Get the latest updates from AIM