Cartooning an Image using OpenCV Python (original) (raw)
Last Updated : 28 Nov, 2025
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 a 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:

Original 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.