Hai, anbi disini bakal kasih sedikit tutorial tentang cara mengkonversi gambar yang berwarna kembali menjadi sketsa pensil atau foto berwarna kalian menjadi sebuah gambaran pensil.

. . .

Sekarang banyak sekali aplikasi filter yang mengubah gambar atau foto kita ke suatu warna tertentu atau lebih imut atau masih banyak lagi. Tapi apakah kalian pernah berpikiran bagaimana filter gambar itu dibuat?

Aplikasi - aplikasi tersebut melakukan manipulasi gambar dengan teknik computer vision. Nah, disini anbi bakal salah satu library terkenal yang dapat melakukan manipulasi gambar ydengan teknik yang sama yaitu OpenCV.

Menggunakan library ini kita coba mengkonversi gambar atau foto berwarna menjadi seperti sketsa pensil. Bagaimana cara melakukannya? mari kita simak langkah - langkahnya dibawah ini.


1. Install Dan Import OpenCV


Pertama kita install dulu library opencv dalam bahasa python menggunakan pip.

pip install opencv-python

Setelah itu kita import modulnya yaitu cv2.

import cv2

2. Load Gambar


Lalu selanjutnya kita load gambar yang ingin kita konversi ke dalam program kita.

img = cv2.imread("gambarku.jpg", 1)
  • gambarku.jpg -> adalah gambar yang ingin anda konversi.

Pastikan gambar dan juga program dalam satu folder untuk mempermudah load image

Gambar yang ingin anbi konversi adalah gambar lawang sewu ini.

‘Gambar Lawang Sewu’
Gambar Lawang Sewu


3. Konversi Gambar Ke Hitam - Putih


Kemudian kita konversi gambar yang kita load tadi ke warna hitam putih terlebih dahulu, menggunakan fungsi cvtColor.

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Kenapa harus dibuat hitam putih? mengubahnya kedalam bentuk hitam putih (grayscale) memberi kita Pixel mana saja yang bisa digunakan dalam membuat gambar menjadi sebuah sketsa pensil.

Lalu, untuk melihat hasilnya kalian bisa menggunakan fungsi imwrite dibawah ini.

cv2.imwrite("img_hitam_putih.png", img_gray)

Fungsi ini akan membuat gambar yang dimanipulasi menjadi sebuah file .png atau ekstensi yang kalian inginkan.

‘Gambar Hitam Putih’
Gambar Hitam Putih


4. Invert Gambar


Langkah selanjutnya adalah inverting warna pada gambar hitam putih. Untuk inverting kita bisa menggunakan fungsi bitwise_not.

img_invert = cv2.bitwise_not(img_gray)

Kenapa harus dikonversi ke invert? Hal ini digunakan untuk membuat daerah yang terang menjadi lebih terang dan sebaliknya. Sehingga kita dapat menemukan garis - garis yang tepat untuk membuat sketsa pensil.

Coba kita lihat hasilnya.

cv2.imwrite("img_invert.png", img_invert)

‘Gambar Inversi’
Gambar Inversi


5. Memperhalus Gambar


Berikutnya adalah memperhalus gambar yang sudah ada dengan cara menambahkan filter gaussian blur pada gambar yang kita invert tadi.

img_smoothing = cv2.GaussianBlur(img_invert, (21, 21),sigmaX=0, sigmaY=0)

Disini kita menggunakan teknik gaussian blur dengan tingkat blur 21 x 21 pixel, serta membiarkan kedua nilai sigma menjadi default (0, 0) pada saat memperhalus gambar kita.

Dengan meningkatkan ukuran filter, kita dapat membuat garis tipis untuk sketsa yang akan kita buat, dan hal ini digunakan juga untuk mengurangi noise pada gambar.

Coba kita lihat hasilnya.

cv2.imwrite("img_smoothing.png", img_invert)

‘Gambar Smoothing’
Gambar Smoothing

“Loh, kok jadi gini?" Sabar, mari kita ke tahap selanjutnya.


6. Sketsa Final


Pada tahap ke 5 kita telah mendapatkan gambar invert yang sudah di perhalus. Nah, dilangkah terakhir ini kita akan mencampurkan gambar hitam putih dengan gambar yang sudah di perhalus.

sketsa_final = cv2.divide(img_gray, 255 - img_smoothing, scale=256)

Menggunakan fungsi divide() untuk membagi nilai pada gambar hitam putih, berdasarkan nilai gambar yang sudah kita perhalus, sehingga menghasilkan gambar dengan garis - garis yang ditebalkan menggunakan kalkulasi tersebut.

Mari kita lihat bagaimana hasil akhirnya.

cv2.imwrite("sketsa_final.png", sketsa_final)

‘Gambar Sketsa Pensil’
Gambar Sketsa Pensil

. . .

Nah, coba kita bandingkan dengan gambar aslinya. Gimana? langsung jadi seperti dibuat dari sketsa pensil kan?

‘Perbandingan’
Perbandingan

Masih banyak lagi hal - hal keren yang bisa kita buat menggunakan library keren ini. Lain kali anbi bakal buat tutorial tentang image processing menggunakan OpenCV.

Untuk full codenya kalian bisa kalian di github AnbiDev.

🐙 https://github.com/AnbiDev/python-opencv-sketch-pencil

Eh, nih anbi kasih satu bonus lagi buat kalian hehe.

‘Waifu Anbi :*'
Waifu Anbi :*

Oke sekian dari Anbi, sampai ketemuan di postingan selanjutnya.