Open In App

Cartooning an Image using OpenCV - Python

Last Updated : 11 Aug, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Cartooning an image turns a normal photo into a fun, animated-style picture. With OpenCV, we do this by smoothing the image to simplify colors and detecting edges to create outlines. Combining these steps makes the photo look like a cartoon.

Prerequisites: Opencv module

Approach

  • Read the input image.
  • Convert the image to grayscale for edge detection.
  • Apply median blur to remove noise.
  • Use adaptive thresholding to detect edges.
  • Apply a bilateral filter to smooth the image while preserving edges.
  • Combine the smoothed image with edges to produce the cartoon effect.

Python Implementation

Python
import cv2
img = cv2.imread("Screenshot.png")
if img is None:
    print("Image not found")
    exit()

# Prep grayscale & blur
g = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
g = cv2.medianBlur(g, 5)

# Edges
e = cv2.adaptiveThreshold(g, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
                          cv2.THRESH_BINARY, 9, 9)

# Smooth color
c = cv2.bilateralFilter(img, 9, 250, 250)

# Combine
cartoon = cv2.bitwise_and(c, c, mask=e)

cv2.imshow("Cartoon", cartoon)
cv2.imwrite("cartoon_output.jpg", cartoon)
cv2.waitKey(0)
cv2.destroyAllWindows()

Output:

Input_image
Original Image
cartoon_image
Cartoon Output Image

Explanation:

  • cv2.cvtColor() converts the image to grayscale for edge detection.
  • cv2.medianBlur() removes noise for cleaner edges.
  • cv2.adaptiveThreshold() detects edges, giving a sketch-like effect.
  • cv2.bilateralFilter() smooths colors while keeping edges sharp.
  • cv2.bitwise_and() combines smoothed colors and edges for the cartoon effect.

Cartooning an Image using OpenCV – Python
Next Article
Article Tags :

Similar Reads