Membuat sketsa yang indah membutuhkan banyak waktu dan tenaga. Untungnya, pemrograman telah berevolusi sehingga kini Anda dapat dengan mudah mengubah gambar dan membuat desain yang indah. Salah satu teknik mengesankan yang dapat Anda lakukan adalah mengubah gambar menjadi sketsa digital.
Meskipun sketsa mekanis tidak akan terlihat persis seperti gambar pensil Anda sendiri, hasilnya tetap layak untuk dicoba. Pelajari cara memprogram aplikasi semacam itu menggunakan modul OpenCV dalam bahasa Python yang sangat ramah.
Modul OpenCV
OpenCV adalah pustaka sumber terbuka yang dikembangkan dan dikelola oleh Intel untuk metode visi komputer yang digunakan untuk pemrosesan gambar dan visi komputer. Itu memudahkan pengguna untuk membuat aplikasi yang dioptimalkan, berinteraksi dengan gambar dan video secara real time, dan memilih algoritme yang ideal untuk kebutuhan mereka.
Beberapa aplikasi populer dari OpenCV termasuk deteksi wajah, pelacakan wajah otomatis dalam sinematografi, filter media sosial, pengenalan plat nomor mobil, dan pemantauan CCTV. Untuk menggunakan modul OpenCV dengan Python, buka terminal Anda dan ketikkan perintah berikut:
pip instal opencv-python
Cara Mengonversi Gambar Apapun Menjadi Sketsa Menggunakan Python
Untuk mengonversi gambar favorit Anda menjadi sketsa digital, mulailah dengan menempatkannya di folder yang sama dengan program Python baru, agar mudah dirujuk. Kemudian mulailah membangun program Anda menggunakan langkah-langkah berikut.
Kode contoh ini tersedia di a repositori GitHub dan gratis untuk Anda gunakan di bawah Lisensi MIT.
Langkah pertama adalah mengimpor modul OpenCV ke lingkungan Anda. Setelah OpenCV tersedia, Anda dapat menggunakan fungsinya untuk melakukan berbagai tugas. Lewati jalur file gambar Anda ke imread() berfungsi memuatnya. Simpan gambar Anda dalam sebuah variabel—dipanggil gambar1 di sini—untuk referensi di masa mendatang.
Simpan judul jendela dalam variabel bernama nama_jendela. Ini akan berguna ketika Anda memilih untuk menampilkan gambar menggunakan imshow() fungsi. Fungsi ini memerlukan dua parameter: judul dan gambar yang ingin ditampilkan.
impor cv2
gambar1 = cv2.imread('gambar.jpg')
nama_jendela = 'Gambar sebenarnya'
cv2.imshow (window_name, image1)
Setelah Anda memiliki gambar yang diinginkan, Anda perlu melakukan lima operasi untuk mengubahnya menjadi sketsa. Pertama, ubah gambar berwarna menjadi skala abu-abu. Anda dapat melakukannya dengan cvtColor() fungsi. Fungsi ini mengambil gambar yang warnanya ingin Anda ubah dan kode konversi seperti COLOR_BGR2GRAY.
grey_img = cv2.cvtColor (gambar1, cv2.COLOR_BGR2GRAY)
Setelah Anda memiliki gambar skala abu-abu, balikkan warnanya. Pada titik ini, Anda perlu memahami bagaimana komputer membentuk gambar. Sebuah gambar terdiri dari banyak piksel kecil dengan intensitas yang bervariasi. Pada citra berwarna, setiap piksel mengandung komponen merah, hijau, dan biru, masing-masing dengan intensitas yang bervariasi dari 0 hingga 255.
Dalam gambar skala abu-abu, hanya ada nuansa abu-abu, sehingga intensitas piksel bervariasi antara 0 dan 1. Untuk membalikkan intensitas piksel gambar ini, teruskan gambar skala abu-abu ke bitwise_not() fungsi.
Seperti namanya, fungsi ini membalikkan nilai setiap piksel ke persamaan komplementernya. Semua piksel yang lebih besar dari 0 diatur ke 0, dan semua piksel yang sama dengan 0 diatur ke 255.
balikkan = cv2.bitwise_not (grey_img)
Setelah membalikkan intensitas piksel, Anda dapat menghaluskan gambar dengan bantuan Gaussian Blur. Proses Gaussian Blur menggunakan filter Gaussian. Filter Gaussian adalah filter low-pass yang hanya mengizinkan frekuensi rendah untuk melewatinya, menghilangkan komponen frekuensi tinggi dari sinyal atau gambar.
OpenCV GaussianBlur() fungsi menerima empat parameter. Ini adalah objek matriks yang bertindak sebagai gambar sumber, ksize (ukuran kernel), dan sigmaX (deviasi standar kernel Gaussian).
Misalkan Anda memiliki foto fisik di tangan Anda. Jika Anda ingin memburamkannya, Anda bisa mengoleskan potongan kertas lilin atau perkamen di atasnya. Anda dapat membayangkan kernel sebagai selembar kertas transparan ini. Secara digital, ini terjadi sedikit berbeda. Untuk memburamkan, mempertajam, dan menerapkan efek lain pada gambar digital, Anda mengalikan matriks dengan intensitas piksel gambar.
Ksize selalu bilangan ganjil positif. Saat Anda meningkatkan ukuran kernel, kekaburan meningkat. Untuk memahami sigmaX, asumsikan Anda menerapkan lilin di atas kertas. Saat Anda mengoleskan lilin, kertas menjadi tembus cahaya secara merata. Demikian pula, Anda harus menjaga nilai kernel mendekati titik tertentu (rata-rata). Nilai sigmaX menentukan perbedaan antara rata-rata dan nilai lain dari piksel dalam sebuah gambar.
Lewati gambar terbalik, ukuran kernel sebagai (21, 21) dan 0 standar deviasi ke fungsi Gaussian Blur:
blur = cv2.GaussianBlur (terbalik, (21, 21), 0)
Lewati gambar buram ke fungsi bitwise_not() lagi untuk membalikkannya:
invertedblur = cv2.bitwise_not (blur)
Akhirnya, gunakan membagi() fungsi dan untuk melakukan pembagian per-elemen dari array gambar grayscale dan array gambar blur terbalik dengan skala 256.
sketch = cv2.divide (grey_img, invertedblur, scale=256.0)
Pada dasarnya fungsi melakukan operasi berikut:
defmembagi(grey_img, b, invertblur=256.0):
kembali (skala abu-abu_img *) / buram terbalik
Simpan hasilnya dalam variabel bernama sketsa. Untuk menyimpan gambar akhir, berikan nama untuk file keluaran Anda dan gambar sketsa ke imwrite() fungsi. Untuk memverifikasinya, Anda dapat menggunakan fungsi imread() untuk memuat gambar sketsa yang disimpan, memberi judul jendela dan menampilkannya menggunakan fungsi imshow().
Menggunakan tombol tunggu() berfungsi dengan melewatkan 0 untuk menampilkan jendela gambar asli dan jendela sketsa yang dihasilkan hingga Anda menekan tombol apa saja.
cv2.imwrite("sketsa.jpeg", sketsa)
gambar = cv2.imread("sketsa.jpeg")
nama_jendela ='Gambar sketsa'
cv2.imshow (window_name, gambar)
cv2.waitKey(0)
Kumpulkan semua kode, dan program Anda sudah siap.
Contoh Hasil Konversi Gambar Menjadi Sketsa Menggunakan Program Python Ini
Anda dapat memilih gambar lanskap yang indah dan menjalankannya melalui program untuk menghasilkan sketsa digital yang menakjubkan ini.
Pada gambar potret, program menghasilkan sketsa digital berikut.
Anda dapat bereksperimen dengan parameter fungsi sesuai dengan keinginan Anda untuk menghasilkan sketsa digital yang Anda inginkan.
Pemrosesan Gambar dan Visi Komputer
Pemrosesan gambar dan visi komputer adalah dua bidang teknologi yang terkait erat. Keduanya melibatkan pengubahan gambar digital untuk mendapatkan hasil yang diinginkan. Pemrosesan gambar berfokus pada peningkatan gambar, sementara visi komputer berupaya menemukan pola dan objek dalam gambar untuk memahaminya.
Scikit-image adalah pustaka Python lain yang menyediakan beragam fungsi pemrosesan gambar. Ini memiliki beberapa modul, filter, lapisan, transformasi, dan banyak lagi yang telah dikompilasi sebelumnya. Jika Anda mencari modul yang akan digunakan untuk model pembelajaran mendalam seperti CNN dan RNN, Anda mungkin ingin menjelajahi Torchvision.