Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Membuat Efek Kartun pada Foto dengan Python

Library python yang kita butuhkan untuk script ini adalah cv2, silakan install dulu dengan cara

pip install opencv-python

Kemudian simpan kode berikut di sebuah file dengan ekstensi .py, misal kartun.py:

import cv2
import numpy as np

filename = "gambar_input.jpg"

def read_file(filename):
  img = cv2.imread(filename)
  # cv2.imshow(img)
  return img

def color_quantization(img, k):
# Transform the image
  data = np.float32(img).reshape((-1, 3))

# Determine criteria
  criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 20, 0.001)

# Implementing K-Means
  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 edge_mask(img, line_size, blur_value):
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  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

img = read_file(filename)

line_size = 7
blur_value = 7

edges = edge_mask(img, line_size, blur_value)
# cv2.imshow(edges)

total_color = 9

img = color_quantization(img, total_color)
# cv2.imshow(img)

blurred = cv2.bilateralFilter(img, d=7, sigmaColor=200,sigmaSpace=200)
# cv2.imshow(blurred)

cartoon = cv2.bitwise_and(blurred, blurred, mask=edges)
# cv2.imshow('', cartoon)
# cv2.waitKey(0)
cv2.imwrite("gambar_output.jpg", cartoon)


Sesuaikan variabel filename dengan foto yang ingin Anda ubah, atau agar lebih mudah, pastikan file gambar berada pada direktori yang sama dengan script ini. Untuk pengguna lanjut, silakan sesuaikan path nya, atau tambahkan library sys.argv agar lebih fleksibel.

Foto sebelum

gambar_input.jpg

Foto sesudah

gambar_output.jpg

Coba mainkan aja beberapa parameter yang digunakan dalam script di atas, siapa tau bisa dapat kombinasi hasil yang lebih ciamik...

Reference:

  • https://towardsdatascience.com/turn-photos-into-cartoons-using-python-bb1a9f578a7e


This post first appeared on WarJog, please read the originial post: here

Share the post

Membuat Efek Kartun pada Foto dengan Python

×

Subscribe to Warjog

Get updates delivered right to your inbox!

Thank you for your subscription

×