Edit foto dengan Python |
Sejenak kita break dari pemanfaatan Python untuk olah data, kali ini kita coba belajar bersama bagaimana cara mengubah foto menjadi kartun. Sebuah fungsi menarik dari Python yang memungkinkan kita melakukan edit terhadap image secara mudah dan cukup cepat.
Kita biasanya menggunakan sejumlah perangkat atau aplikasi edit foto untuk melakukan edit hingga konversi foto dalam bentuk lain, misalnya kartun. Namun, bahasa pemrograman Python juga memiliki kemampuan yang sama untuk melakukan edit terhadap foto. Dengan sejumlah code yang tersedia di Python sebagai hasil jerih payah para developer Python, edit foto dan konversi foto ke dalam bentuk lain lebih efisien.
Gambar atau foto yang akan kita olah kali ini adalah hasil oret-oretan saya dengan tema "Astronot" yang saya buat untuk anak saya di selah-selah kesibukan. Berikut gambarnya untuk diunduh:
Astronot Ahmad Daris Nawala |
Dengan menggunakan foto tersebut, cara mengubah foto menjadi kartun dengan Python dapat dilakukan dengan beberapa langkah berikut:
import cv2
import numpy as np
import matplotlib.pyplot as plt
foto = cv2.imread("C:\\Users\\Joko Ade\\Downloads\\gambarku.jpeg")
foto = cv2.cvtColor(foto,cv2.COLOR_BGR2RGB)
plt.figure(figsize=(10,10))
plt.imshow(foto)
plt.axis("off")
plt.title("Gambar Awal")
plt.show()
abuabu = cv2.cvtColor(foto, cv2.COLOR_BGR2GRAY)
abuabu = cv2.medianBlur(abuabu, 5)
plt.figure(figsize=(10,10))
plt.imshow(abuabu,cmap="gray")
plt.axis("off")
plt.title("Gambar Abu-abu")
plt.show()
edges = cv2.adaptiveThreshold(abuabu, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9)
plt.figure(figsize=(10,10))
plt.imshow(edges,cmap="gray")
plt.axis("off")
plt.title("Edged dari Gambar")
plt.show()
color = cv2.bilateralFilter(foto, 9, 250, 250)
cartoon = cv2.bitwise_and(color, color, mask=edges)
plt.figure(figsize=(10,10))
plt.imshow(cartoon,cmap="gray")
plt.axis("off")
plt.title("Hasil Konversi Gambar ke Cartoon")
plt.show()
Demikian sedikit sharing kita kali ini. Semoga sedikit banyak memberi manfaat. Selamat mempraktikkan!