Face Detection with OpenCV

Aldi Rifqi

Sosial Media


1 orang menyukai ini
Suka

Summary

OpenCV (Open Source Computer Vision Library) adalah perpustakaan perangkat lunak yang dirancang untuk pemrosesan gambar dan pengenalan objek. OpenCV awalnya dikembangkan oleh Intel dan sekarang dikelola oleh sebuah perusahaan non-profit, OpenCV.org. OpenCV menyediakan berbagai fungsi dan alat yang dapat digunakan untuk berbagai aplikasi komputer visi, seperti deteksi wajah, pengenalan objek, pelacakan gerakan, analisis gambar medis, dan banyak lagi.

Description

  • Import Library

Pada kode di atas, berbagai pustaka digunakan untuk keperluan pengolahan data dan gambar: NumPy (import numpy as np) untuk manipulasi array dan operasi matematika efisien pada data multidimensi; Pandas (import pandas as pd) untuk manipulasi dan analisis data terutama struktur data tabular; Matplotlib (import matplotlib.pyplot as plt) untuk visualisasi data dengan pembuatan grafik dan plot; OpenCV (import cv2) sebagai pustaka utama untuk pengolahan gambar dan video, termasuk deteksi wajah; Tarfile (import tarfile) untuk mengekstrak file dari arsip tar yang sering digunakan dalam distribusi kumpulan data terkompresi; dan OS (import os) untuk berinteraksi dengan sistem operasi, memungkinkan akses dan manipulasi file serta direktori.

 

  • Connect to Kaggle

Pada kode di atas, beberapa langkah dilakukan untuk mengunduh dan mengekstrak dataset dari Kaggle. Pertama, pustaka Kaggle diinstal menggunakan `!pip install -q kaggle`. Direktori tersembunyi `~/.kaggle` dibuat untuk menyimpan kredensial API Kaggle. File `kaggle.json`, yang berisi kredensial API, disalin ke dalam direktori tersebut dan izin aksesnya diubah dengan `!chmod 600 ~/.kaggle/kaggle.json` untuk memastikan keamanan. Dataset "lfwpeople" kemudian diunduh dari Kaggle menggunakan perintah `!kaggle datasets download -d 'atulanandjha/lfwpeople'`. Setelah diunduh, file ZIP dataset dibuka menggunakan pustaka `zipfile`, diekstrak ke direktori kerja saat ini, dan kemudian file ZIP ditutup untuk menyelesaikan proses.

 

  • Connect to OpenCV

Pada kode di atas, file XML untuk model deteksi wajah Haar Cascade diunduh dari repositori OpenCV di GitHub menggunakan perintah `!wget https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml`. File ini berisi data pra-pelatihan yang digunakan oleh algoritma Haar Cascade untuk mendeteksi wajah dalam gambar. Setelah diunduh, jalur file tersebut disimpan dalam variabel `faceCascadePath`, yang akan digunakan dalam program untuk memuat dan mengaplikasikan model deteksi wajah pada gambar atau video. Model Haar Cascade ini adalah salah satu metode yang sering digunakan untuk deteksi wajah karena kecepatan dan keakuratannya dalam berbagai aplikasi visi komputer.

 

  • Detecting Faces in Image

Pada kode di atas, sebuah kelas bernama `FaceDetector` didefinisikan untuk mendeteksi wajah dalam gambar menggunakan model Haar Cascade dari OpenCV. Metode `__init__` pada kelas ini menginisialisasi objek dengan memuat classifier Haar Cascade dari jalur yang diberikan (`faceCascadePath`). Metode `detect` menerima gambar sebagai input dan beberapa parameter opsional (`scaleFactor`, `minNeighbors`, `minSize`) untuk mengkonfigurasi proses deteksi. Metode ini menggunakan fungsi `detectMultiScale` dari OpenCV untuk mendeteksi wajah, yang mengembalikan koordinat persegi panjang yang mengelilingi wajah-wajah yang terdeteksi dalam gambar. Persegi panjang ini kemudian dikembalikan oleh metode `detect`, memungkinkan penggunaan lebih lanjut seperti menandai atau memproses area wajah yang terdeteksi.

Pada kode di atas, jalur untuk model Haar Cascade untuk deteksi wajah frontal disimpan dalam variabel `frontal_cascade_path`. Objek `FaceDetector` kemudian dibuat menggunakan jalur ini, memuat model Haar Cascade yang diperlukan untuk mendeteksi wajah. Sebuah gambar yang berisi wajah-wajah, diambil dari jalur `/content/haarcascade-frontal-faces/women-doing-jogging-together.jpg`, dimuat ke dalam variabel `image_faces` menggunakan `cv2.imread`. Fungsi `get_image_faces` mengembalikan salinan dari gambar ini, sedangkan fungsi `show_image` menampilkan gambar tersebut menggunakan Matplotlib. Sebelum menampilkan gambar, urutan warna gambar diubah dari BGR (yang digunakan oleh OpenCV) ke RGB (yang digunakan oleh Matplotlib) dengan `cv2.cvtColor`. Fungsi `plt.imshow` digunakan untuk menampilkan gambar dalam ukuran besar tanpa sumbu x dan y.

Pada kode di atas, fungsi `detect_face` didefinisikan untuk mendeteksi wajah dalam sebuah gambar dan menandainya dengan persegi panjang. Fungsi ini pertama-tama mengubah gambar input menjadi grayscale menggunakan `cv2.cvtColor`, karena deteksi wajah Haar Cascade bekerja lebih baik pada gambar grayscale. Kemudian, deteksi wajah dilakukan menggunakan metode `detect` dari objek `FaceDetector` (`fd`), dengan parameter `scaleFactor`, `minNeighbors`, dan `minSize` yang ditentukan. Koordinat persegi panjang wajah yang terdeteksi digunakan untuk menggambar persegi panjang berwarna hijau (127, 255, 0) di sekitar wajah-wajah yang terdeteksi pada gambar asli menggunakan `cv2.rectangle`. Setelah itu, gambar yang telah ditandai ditampilkan menggunakan fungsi `show_image`. Fungsi `get_image_faces` dipanggil untuk mendapatkan salinan gambar asli, dan `detect_face` diterapkan pada gambar tersebut dengan parameter tertentu untuk mendeteksi dan menampilkan wajah-wajah yang terdeteksi. Berikut adalah hasil dari deteksi wajah menggunakan OpenCV.

Informasi Course Terkait
  Kategori: Computer Vision
  Course: Image Processing with OpenCV