{"id":990,"date":"2021-05-29T10:09:31","date_gmt":"2021-05-29T10:09:31","guid":{"rendered":"https:\/\/unydevelopernetwork.com\/?p=990"},"modified":"2021-05-29T10:09:39","modified_gmt":"2021-05-29T10:09:39","slug":"membuat-face-detection-sederhana-dengan-opencv","status":"publish","type":"post","link":"https:\/\/unydevelopernetwork.com\/index.php\/2021\/05\/29\/membuat-face-detection-sederhana-dengan-opencv\/","title":{"rendered":"Membuat Face Detection Sederhana Dengan OpenCV"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 7<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>\n<p>Selamat datang di blogs UNYDeveloperNetwork. Saya telah menulis dua artikel yang berkaitan dengan openCV sebelumnya (<a rel=\"noreferrer noopener\" href=\"https:\/\/unydevelopernetwork.com\/index.php\/2021\/05\/03\/membuat-deteksi-plat-nomer-kendaraan-sederhana-dengan-opencv-python\/\" target=\"_blank\">Membuat Deteksi Plat Nomer Kendaraan Sederhana Dengan OpenCV (Python)<\/a> dan <a rel=\"noreferrer noopener\" href=\"https:\/\/unydevelopernetwork.com\/index.php\/2021\/04\/24\/membuat-penghitung-koin-sederhana-dengan-opencv\/\" target=\"_blank\">Membuat Penghitung Koin Sederhana Dengan OpenCV<\/a>). Entah kenapa akhir-akhir ini Saya begitu tertarik untuk menulis konten yang berbau <em>Computer Vision<\/em>. Sehingga, pada artikel kali ini pun Saya memutuskan untuk membuat konten yang berkaitan dengan OpenCV lagi. Baik, bahasan pada artikel kali ini masih disekitar aplikasi-aplikasi dasar OpenCV. Namun kali ini, Saya ingin membagikan sesuatu yang lebih menarik lagi yakni <em>Face Detection<\/em>. Ingat Ya, <em>Face Detection<\/em>, bukan <em>Face Recognition<\/em>. Jadi keluaran dari project ini adalah sebuah program yang dapat mendeteksi wajah, bukan merekognisi wajah. Bagaimana cara membuat program <em>face detection<\/em> ini? Mari kita simak postingan ini sampai akhir.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Baik, sebelum kita memulai project ini, ada baiknya kita persiapkan terlebih dahulu tool-tool yang kita perlukan. Dalam project ini Saya menggunakan tool-tool berikut ini.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Python 3.8<\/li><li>OpenCV 4.5.1.48<\/li><li>Classifier haarcascades (bisa diunduh melalui tautan <strong><a href=\"https:\/\/github.com\/opencv\/opencv\/tree\/master\/data\/haarcascades\" target=\"_blank\" rel=\"noreferrer noopener\">ini<\/a><\/strong>)<\/li><li>PyCharm Community Edition<\/li><\/ol>\n\n\n\n<p>Untuk selanjutnya, Saya asumsikan Anda sudah familiar dengan PyCharm Community Edition. Oleh karena itu, Saya tidak akan menjelaskan panjang lebar tentang bagaimana cara membuat project baru. Baik, tidak perlu membuang banyak waktu lagi, mari kita mulai saja projectnya. Untuk menyelesaikan project ini, kita akan menggunakan beberapa tahap. Tahapan-tahapan ini sengaja Saya buat supaya Anda dapat lebih paham ketika membuat program ini. Berikut adalah tahapan-tahapannya.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Inisiasi<\/h2>\n\n\n\n<p>Dalam langkah ini, kita persiapkan terlebih dahulu file-file yang akan kita perlukan dalam project ini. File pertama yang kita perlukan adalah file foto dengan wajah orang. Di sini boleh hanya mengandung satu wajah saja atau banyak wajah. Pada contoh di bawah ini, Saya akan menggunakan foto pribadi berikut ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-13-700x523.png\" alt=\"\" class=\"wp-image-991\" width=\"521\" height=\"389\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-13-700x523.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-13-300x224.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-13-768x574.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-13.png 853w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><figcaption>Foto yang akan dianalisis<\/figcaption><\/figure><\/div>\n\n\n\n<p>Setelah itu, kita perlu mendownload dua file yang akan kita gunakan sebagai <em>classifier<\/em> dalam project ini. File tersebut dapat diakses melalui tautan berikut <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/opencv\/opencv\/tree\/master\/data\/haarcascades\" target=\"_blank\">ini<\/a><\/strong>. Ketika tautan tersebut diakses, maka kita akan melihat halaman seperti tangkapan layar di bawah ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-14-700x395.png\" alt=\"\" class=\"wp-image-992\" width=\"596\" height=\"336\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-14-700x395.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-14-300x169.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-14-768x434.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-14.png 1280w\" sizes=\"auto, (max-width: 596px) 100vw, 596px\" \/><figcaption>Tampilan Github haarcascades<\/figcaption><\/figure><\/div>\n\n\n\n<p>Kita memerlukan dua buah file yakni <strong>haarcascade_frontalface_default.xml<\/strong> dan <strong>haarcascade_eye.xml<\/strong>. Download kedua file tersebut dan letakkan sembarang di dalam komputer. Nantinya, kita akan memasukkan kedua file tersebut ke dalam project.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"434\" height=\"130\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-16.png\" alt=\"\" class=\"wp-image-994\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-16.png 434w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-16-300x90.png 300w\" sizes=\"auto, (max-width: 434px) 100vw, 434px\" \/><figcaption>Dua buah file <em>classifier<\/em> yang siap digunakan<\/figcaption><\/figure><\/div>\n\n\n\n<p>Jika seluruh file sudah siap, kini saatnya Anda membuat project baru.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Membuat Project Baru<\/h2>\n\n\n\n<p>Silakan buat project baru pada PyCharm dengan nama <strong>Simple Face Detection<\/strong> dengan ketentuan Python Interpreter versi 3.8 dan OpenCV 4.5.1.48.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"130\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-18.png\" alt=\"\" class=\"wp-image-996\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-18.png 330w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-18-300x118.png 300w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/><figcaption>Project baru telah selesai dibuat<\/figcaption><\/figure><\/div>\n\n\n\n<p>Selanjutnya, masukkan gambar\/foto ke dalam project. Berikan nama <strong>foto_deteksi. <\/strong>Format foto bebas (JPG  \/ PNG.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"366\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-20-700x366.png\" alt=\"\" class=\"wp-image-998\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-20-700x366.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-20-300x157.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-20-768x402.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-20.png 1125w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><figcaption>Gambar sudah diimport ke dalam project<\/figcaption><\/figure><\/div>\n\n\n\n<p>Setelah kita memasukkan gambar ke dalam project, selanjutnya adalah kita masukkan juga kedua file <em>classifier<\/em> yang berbentuk XML tadi ke dalam project. Sehingga di akhir, kita sudah memiliki tiga file di dalam project.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"186\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-22.png\" alt=\"\" class=\"wp-image-1000\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-22.png 330w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-22-300x169.png 300w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/><figcaption>File &#8211; file yang diperlukan sudah diimport ke dalam project<\/figcaption><\/figure><\/div>\n\n\n\n<p>Terakhir, sebelum kita berpindah ke langkah selanjutnya, kita buat terlebih dahulu <em>script<\/em> python baru dengan nama <strong>facedetection.py<\/strong>. Sampai di sini, kita dapat melanjutkan ke tahap selanjutnya.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"200\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-24.png\" alt=\"\" class=\"wp-image-1002\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-24.png 330w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-24-300x182.png 300w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/><figcaption>Hasil akhir tahap pembuatan project baru<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Memuat Gambar Ke Dalam Program<\/h2>\n\n\n\n<p>Seperti pada umumnya, setelah kita selesai membuat project baru, kita lanjutkan dengan memuat gambar ke dalam program. Untuk melakukannya, terlebih dahulu kita import library <strong>openCV<\/strong> ke dalam program. Ketikkan kode berikut ini pada <em>script<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2 as cv<\/code><\/pre>\n\n\n\n<p>Selanjutnya kita muat gambar kita ke dalam program dengan menggunakan fungsi <strong>imread()<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>imgsrc = cv.imread('foto_deteksi.jpg')<\/code><\/pre>\n\n\n\n<p>Kemudian kita coba tampilkan dengan menggunakan fungsi <strong>imshow().<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv.imshow('Original Resource', imgsrc)<\/code><\/pre>\n\n\n\n<p>Jangan lupa tambahkan fungsi <strong>waitKey()<\/strong> dan <strong>destroyAllWindows()<\/strong> untuk mengatur timing dan tampilan hasil program.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv.waitKey(0)\ncv.destroyAllWindows()<\/code><\/pre>\n\n\n\n<p>Kita coba jalankan <em>script<\/em> yang baru saja kita buat. Maka tampilannya akan seperti tangkapan layar di bawah ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/Screen-Shot-2021-05-07-at-11.22.37-1-700x425.png\" alt=\"\" class=\"wp-image-1004\" width=\"516\" height=\"313\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/Screen-Shot-2021-05-07-at-11.22.37-1-700x425.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/Screen-Shot-2021-05-07-at-11.22.37-1-300x182.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/Screen-Shot-2021-05-07-at-11.22.37-1-768x467.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/Screen-Shot-2021-05-07-at-11.22.37-1.png 800w\" sizes=\"auto, (max-width: 516px) 100vw, 516px\" \/><figcaption>Gambar berhasil dimuat ke dalam program<\/figcaption><\/figure><\/div>\n\n\n\n<p>Namun, ternyata gambar masih sangat besar ya. Oleh karena itu kita akan melanjutkannya ke langkah selanjutnya. Yakni mengubah ukuran dimensi gambar.<\/p>\n\n\n\n<p><strong>SCRIPT SAAT INI<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2 as cv\n\nimgsrc = cv.imread('foto_deteksi.jpg')\ncv.imshow('Original Resource', imgsrc)\n\ncv.waitKey(0)\ncv.destroyAllWindows()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mengubah Ukuran Dimensi Gambar<\/h2>\n\n\n\n<p>Pada tahap ini, kita akan mengubah ukuran dimensi gambar supaya tidak terlalu besar, dan tidak memenuhi layar komputer kita. Untuk mengubah ukuran dimensi gambar, kita akan menggunakan library <strong>imutils()<\/strong>. Oleh karena itu, ketikkan kode berikut ini untuk mengimport library <strong>imutils() <\/strong>ke dalam <em>script<\/em>. Letakkan kode di baris kedua dari <em>script<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import imutils as im<\/code><\/pre>\n\n\n\n<p>Setelah kita mengimport library <strong>imutils()<\/strong>, kita dapat menggunakan fungsi <strong>resize()<\/strong> untuk mengubah ukuran dimensi gambar. Ketikkan kode berikut di bawah fungsi <strong>imshow()<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>imgres = im.resize(imgsrc, width=500)<\/code><\/pre>\n\n\n\n<p>Selanjutnya, kita coba tampilkan gambar hasil <em>resize<\/em> dengan menggunakan fungsi <strong>imshow()<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv.imshow('Resized Image', imgres)<\/code><\/pre>\n\n\n\n<p>Mari kita coba jalankan <em>script<\/em> yang sudah kita tambahkan dengan kode di atas. Kita akan melihat keluaran program seperti tangkapan layar di bawah ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-25-700x544.png\" alt=\"\" class=\"wp-image-1005\" width=\"569\" height=\"442\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-25-700x544.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-25-300x233.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-25-768x597.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-25.png 953w\" sizes=\"auto, (max-width: 569px) 100vw, 569px\" \/><figcaption>Gambar hasil ubahan dimensi ditampilkan bersama gambar originalnya<\/figcaption><\/figure><\/div>\n\n\n\n<p>Sampai di sini, kini kita sudah memiliki resource gambar yang sudah diresized sehingga ukurannya tidak terlalu tebal. Oleh karena itu, kita bisa menghilangkan fungsi <strong>imshow()<\/strong> yang menampilkan gambar original. Sehingga hasil akhir <em>script<\/em> pada tahapan ini adalah sebagai berikut.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2 as cv\nimport imutils as im\nimgsrc = cv.imread('foto_deteksi.jpg')\n\nimgres = im.resize(imgsrc, width=500)\ncv.imshow('Resized Image', imgres)\n\ncv.waitKey(0)\ncv.destroyAllWindows()<\/code><\/pre>\n\n\n\n<p>Kita coba jalankan <em>script-<\/em>nya dan akan mengeluarkan tampilan seperti tangkapan layar di bawah ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"667\" height=\"515\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-27.png\" alt=\"\" class=\"wp-image-1007\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-27.png 667w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-27-300x232.png 300w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><figcaption>Program hanya menampilkan gambar yang sudah diresize ukuran dimensinya.<\/figcaption><\/figure><\/div>\n\n\n\n<p>Selain itu, karena kita sudah melakukan resize ukuran dimensi gambar, maka kita bisa menggunakan variabel tempat menyimpan gambar hasil resize untuk melaju ke langkah selanjutnya.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mengubah Color Space ke Grayscale<\/h2>\n\n\n\n<p>Tahapan selanjutnya adalah mengubah colorspace gambar yang sudah kita resize pada tahap sebelumnya menjadi grayscale. Tujuannya adalah lebih menyederhanakan gambar sehingga proses pendeteksian juga lebih cepat dan lebih akurat. Fungsi yang digunakan adalah fungsi <strong>cvtColor()<\/strong> dan flags yang digunakan adalah <strong>COLOR_BGR2GRAY<\/strong>. Masukkan kode berikut setelah fungsi <strong>imshow()<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>imggrey = cv.cvtColor(imgres, cv.COLOR_BGR2GRAY)<\/code><\/pre>\n\n\n\n<p>Seperti biasa, untuk melihat hasilnya, kita tambahkan fungsi <strong>imshow()<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv.imshow('Grayscaled Image', imggrey)<\/code><\/pre>\n\n\n\n<p>Mari kita coba <em>script<\/em> yang sudah kita tambahkan beberapa kode di atas.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-28-700x470.png\" alt=\"\" class=\"wp-image-1008\" width=\"559\" height=\"375\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-28-700x470.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-28-300x202.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-28-768x516.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-28.png 865w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><figcaption>Perbedaan antara gambar original dengan gambar hasil <em>grayscaled<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p>Setelah kita tambahkan beberapa kode di atas, tampak pada tangkapan layar di atas, gambar yang diubah colorspaces nya berubah menjadi grayscale sehingga tampak lebih sederhana untuk dilakukan analisis. Sampai pada tahap ini, kondisi <em>script<\/em> kita adalah sebagai berikut.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2 as cv\nimport imutils as im\nimgsrc = cv.imread('foto_deteksi.jpg')\n\nimgres = im.resize(imgsrc, width=500)\ncv.imshow('Resized Image', imgres)\n\nimggrey = cv.cvtColor(imgres, cv.COLOR_BGR2GRAY)\ncv.imshow('Grayscaled Image', imggrey)\n\ncv.waitKey(0)\ncv.destroyAllWindows()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mendeteksi Wajah<\/h2>\n\n\n\n<p>Sampailah kita ke tahapan inti dari project <em>face detection<\/em> sederhana ini. Tahapan ini saya bagi menjadi beberapa bagian, karena memang bagian-bagian ini tidak dapat dipisahkan menjadi tahapan-tahapan tersendiri. <strong>Bagian Pertama<\/strong> adalah menginisiasi <em>classifier<\/em> yang akan digunakan untuk mendeteksi wajah dan mata di sebuah gambar. Anda tentu masih ingat di awal project ini kita telah mengimport beberapa file, dan beberapa diantaranya adalah dua buah file XML. File XML ini yang akan kita gunakan sebagai <em>classifier<\/em> untuk mendeteksi wajah dan mata di sebuah gambar. Fungsi yang akan kita gunakan adalah fungsi <strong>CascadeClassifier()<\/strong> dengan parameternya adalah kedua file XML tadi. Tambahkan kode berikut di bawah kode <strong>import<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>faces = cv.CascadeClassifier('haarcascade_frontalface_default.xml')\neyes = cv.CascadeClassifier('haarcascade_eye.xml')<\/code><\/pre>\n\n\n\n<p>Setelah kita menginisiasi <em>classifier<\/em> bagian selanjutnya adalah <strong>mendeteksi wajah<\/strong>. Untuk melakukannya kita akan menggunakan variabel <strong>faces<\/strong> dan fungsi <strong>detectMultiScale()<\/strong>. Tambahkan kode berikut setelah <strong>imshow()<\/strong> grayscale.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>faceDetection = faces.detectMultiScale(imggrey, 1.3, 1)<\/code><\/pre>\n\n\n\n<p>Sampai di tahap ini, kita seharusnya sudah bisa memperoleh data &#8220;berapa wajah yang terdeteksi di sebuah gambar&#8221;. Untuk memeriksanya, tambahkan fungsi berikut ini tepat di bawah variabel <strong>faceDetection<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>totalFaces = 0\nfor(x, y, w, h) in faceDetection:\n    totalFaces = totalFaces + 1\nprint(totalFaces)<\/code><\/pre>\n\n\n\n<p>Sehingga sampai di tahap ini, <em>script<\/em> kita sudah menjadi seperti di bawah ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2 as cv\nimport imutils as im\n\nfaces = cv.CascadeClassifier('haarcascade_frontalface_default.xml')\neyes = cv.CascadeClassifier('haarcascade_eye.xml')\n\nimgsrc = cv.imread('foto_deteksi.jpg')\n\nimgres = im.resize(imgsrc, width=500)\ncv.imshow('Resized Image', imgres)\n\nimggrey = cv.cvtColor(imgres, cv.COLOR_BGR2GRAY)\ncv.imshow('Grayscaled Image', imggrey)\n\nfaceDetection = faces.detectMultiScale(imggrey, 1.3, 1)\n\ntotalFaces = 0\nfor(x, y, w, h) in faceDetection:\n    totalFaces = totalFaces + 1\n\nprint(totalFaces)\n\ncv.waitKey(0)\ncv.destroyAllWindows()<\/code><\/pre>\n\n\n\n<p>Ketika <em>script<\/em> kita jalankan:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-29.png\" alt=\"\" class=\"wp-image-1009\" width=\"468\" height=\"418\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-29.png 651w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-29-300x268.png 300w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><figcaption>4 wajah terdeteksi pada gambar<\/figcaption><\/figure><\/div>\n\n\n\n<p>Tampak <em>console<\/em> PyCharm CE menampilkan angka 4 yang merupakan hasil pendeteksian: Terdapat 4 wajah di dalam gambar. Untuk meyakinkan lagi bahwa kita benar-benar berhasil mendeteksi wajah, maka kita akan menggambar sebuah rectangle di sekitar wajah yang terdeteksi. Oleh karena itu, <strong>bagian selanjutnya<\/strong> adalah <strong>menggambarkan rectangle<\/strong>. Letakkan kode berikut ini di bawah kode <strong>totalFaces = totalFaces + 1<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv.rectangle(imgres, (x,y), (x+w, y+h), (255,0,0), 2)<\/code><\/pre>\n\n\n\n<p>Setelah itu, tambahkan kode berikut ini untuk menampilkan hasil penggambaran <strong>rectangle<\/strong>. Letakkan kode di bawah kode <strong>print(totalFaces)<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv.imshow('HASIL AKHIR', imgres)<\/code><\/pre>\n\n\n\n<p>Sehingga, sampai di tahap ini <em>script<\/em> kita sudah menjadi seperti ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2 as cv\nimport imutils as im\n\nfaces = cv.CascadeClassifier('haarcascade_frontalface_default.xml')\neyes = cv.CascadeClassifier('haarcascade_eye.xml')\n\nimgsrc = cv.imread('foto_deteksi.jpg')\n\nimgres = im.resize(imgsrc, width=500)\ncv.imshow('Resized Image', imgres)\n\nimggrey = cv.cvtColor(imgres, cv.COLOR_BGR2GRAY)\ncv.imshow('Grayscaled Image', imggrey)\n\nfaceDetection = faces.detectMultiScale(imggrey, 1.3, 1)\n\ntotalFaces = 0\nfor(x, y, w, h) in faceDetection:\n    totalFaces = totalFaces + 1\n    cv.rectangle(imgres, (x,y), (x+w, y+h), (255,0,0), 2)\n\n\nprint(totalFaces)\n\ncv.imshow('HASIL AKHIR', imgres)\ncv.waitKey(0)\ncv.destroyAllWindows()<\/code><\/pre>\n\n\n\n<p>Sekarang, mari kita coba eksekusi <em>script<\/em> di atas. Maka, hasilnya adalah seperti tangkapan layar di bawah ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"436\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-30-700x436.png\" alt=\"\" class=\"wp-image-1010\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-30-700x436.png 700w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-30-300x187.png 300w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-30-768x479.png 768w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-30.png 1024w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><figcaption>4 wajah yang terdeteksi sukses ditandai.<\/figcaption><\/figure><\/div>\n\n\n\n<p>Anda dapat merapikan <em>script<\/em> dengan menghapus perintah-perintah di bawah ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cv.imshow('Resized Image', imgres)\ncv.imshow('Grayscaled Image', imggrey)<\/code><\/pre>\n\n\n\n<p>Sehingga <em>script<\/em> akhir kita adalah seperti ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2 as cv\nimport imutils as im\n\nfaces = cv.CascadeClassifier('haarcascade_frontalface_default.xml')\neyes = cv.CascadeClassifier('haarcascade_eye.xml')\n\nimgsrc = cv.imread('foto_deteksi.jpg')\nimgres = im.resize(imgsrc, width=500)\nimggrey = cv.cvtColor(imgres, cv.COLOR_BGR2GRAY)\n\nfaceDetection = faces.detectMultiScale(imggrey, 1.3, 1)\n\ntotalFaces = 0\nfor(x, y, w, h) in faceDetection:\n    totalFaces = totalFaces + 1\n    cv.rectangle(imgres, (x,y), (x+w, y+h), (255,0,0), 2)\n\nprint(totalFaces)\n\ncv.imshow('HASIL AKHIR', imgres)\ncv.waitKey(0)\ncv.destroyAllWindows()<\/code><\/pre>\n\n\n\n<p>Apabila dijalankan, maka akan tampil seperti tangkapan layar di bawah ini.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"623\" height=\"571\" src=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-31.png\" alt=\"\" class=\"wp-image-1011\" srcset=\"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-31.png 623w, https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-31-300x275.png 300w\" sizes=\"auto, (max-width: 623px) 100vw, 623px\" \/><figcaption>Hasil akhir setelah <em>script<\/em> &#8220;dirapikan&#8221;<\/figcaption><\/figure><\/div>\n\n\n\n<p>Nah, sampai di sini, project <em>face detection<\/em> sudah selesai dibuat. Tunggu project saya selanjutnya yakni <em>face recognition<\/em>. Apa perbedaan antara <em>face detection<\/em> dengan <em>face recognition<\/em>? Tunggu postingan Saya selanjutnya.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Demikian postingan saya tentang\u00a0<strong>Membuat Face Detection Sederhana Dengan OpenCV<\/strong> <strong>(Python).\u00a0<\/strong>Semoga postingan ini bermanfaat bagi Anda yang ingin belajar tentang OpenCV. Apabila Anda masih menemukan kendala dalam membuat program ini, Anda dapat meninggalkan pertanyan di kolom komentar. Jika Anda ingin mencuplik sebagian teks dari artikel ini, Saya mohon jangan lupa sertakan sumber dan penulisnya.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Terima Kasih\u2026. ^_^<\/h1>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>DOWNLOAD<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/cdn.unydevelopernetwork.com\/foto_deteksi.jpg\" target=\"_blank\" rel=\"noreferrer noopener\">Resource Gambar<\/a><\/li><li><a href=\"https:\/\/github.com\/milstrike\/SimpleOpenCVProject\/tree\/main\/Simple-Face-Detection\" target=\"_blank\" rel=\"noreferrer noopener\">Project :: Face Detection<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 7<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Selamat datang di blogs UNYDeveloperNetwork. Saya telah menulis dua artikel yang berkaitan dengan openCV sebelumnya (Membuat Deteksi Plat Nomer Kendaraan Sederhana Dengan OpenCV (Python) dan Membuat Penghitung Koin Sederhana Dengan OpenCV). Entah&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1011,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[24,2],"tags":[139,298,296,297,305,306,302,295,72,304,307],"class_list":["post-990","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-tutorial","tag-coding","tag-computer-vision","tag-computervision","tag-cv","tag-detection","tag-face-detection","tag-koding","tag-opencv","tag-pemrograman","tag-pycharm","tag-simple-face-detection"],"featured_image_src":"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-31.png","author_info":{"display_name":"Muhammad Irfan Luthfi","author_link":"https:\/\/unydevelopernetwork.com\/index.php\/author\/admin\/"},"jetpack_featured_media_url":"https:\/\/unydevelopernetwork.com\/wp-content\/uploads\/2021\/05\/image-31.png","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/990","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/comments?post=990"}],"version-history":[{"count":1,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/990\/revisions"}],"predecessor-version":[{"id":1012,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/posts\/990\/revisions\/1012"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/media\/1011"}],"wp:attachment":[{"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/media?parent=990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/categories?post=990"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unydevelopernetwork.com\/index.php\/wp-json\/wp\/v2\/tags?post=990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}