Jainam Jain
Initial Commit
7d1cd50
raw
history blame
971 Bytes
import cv2
import numpy as np
import matplotlib.pyplot as plt
def edge_mask(img, line_size=7, blur_value=7):
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
gray_blur = cv2.medianBlur(gray, blur_value)
edges = cv2.adaptiveThreshold(gray_blur, 255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,line_size, blur_value)
return edges
def color_quantization(img,k):
data = np.float32(img).reshape((-1,3))
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER,20,0.001)
ret, label, center = cv2.kmeans(data, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)
center = np.uint8(center)
result = center[label.flatten()]
result = result.reshape(img.shape)
return result
def cartoon(img,params=[7,7,11]):
edges = edge_mask(img, params[0], params[1])
res = color_quantization(img,params[2])
blurr = cv2.bilateralFilter(res, d=7, sigmaColor=200,sigmaSpace=200)
c = cv2.bitwise_and(blurr,blurr,mask=edges)
return c