Face Detection dengan menggunakan Python OpenCV
Algoritma Haar-Cascade
Deteksi wajah atau face detection adalah teknologi komputer yang digunakan dalam berbagai aplikasi yang mengidentifikasi wajah manusia dalam gambar digital. Deteksi wajah juga mengacu pada proses psikologis yang digunakan manusia untuk menemukan dan memperhatikan wajah dalam pemandangan visual.
face recognition atau pengenalan wajah adalah sebuah sistem yang mampu mencocokkan wajah manusia dari gambar digital atau bingkai video dengan database wajah, biasanya digunakan untuk mengotentikasi pengguna melalui layanan verifikasi ID, bekerja dengan menunjukkan dan mengukur fitur wajah dari gambar tertentu.
Sebelum masuk ke face detection, terdapat library pada Python yang harus dimiliki terlebih dahulu, yaitu OpenCv. Jika menggunakan jendela Command Prompt, maka gunakan kode berikut untuk menginstall OpenCV :
python -m pip install --upgrade opencv-contrib-python
Selain itu, disini juga menggunakan librari Pillow, yang mana untuk menginstalnya, gunakan kode berikut :
pip install Pillow
Face Detection menggunakan Webcam Laptop
Langkah pertama yang harus dilakukan untuk membuat sebuah sistem face detection adalah membuat program untuk mendeteksi wajah terlebih dahulu. Disini penulis menggunakan kamera bawaan dari laptop, sehingga penulisan file python nya dapat dilakukan seperti berikut.
import cv2
cam = cv2.VideoCapture(0)
while True:
retV, frame = cam.read()
abuAbu = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('Webcamku',frame)
cv2.imshow('Webacamku', abuAbu)
k = cv2.waitKey(1) & 0xFF
if k == 27 or k == ord('q'):
break
cam.release()
cv2.destroyAllWindows()
Simpan file diatas dengan nama “webcam.py”. Hasilnya adalah sebagai berikut.
Untuk mengeluarkan webcam, cukup menekan tombol “Q” atau “ESC” pada keyboard.Pada pembelajaran mengenai IMAGE PROCCESING dijelaskan lebih lengkap mengenai mengapa gambar yang berwarna harus diubah ke warna abu-abu dalam proses face recognition ini.
Face Detection dengan Tambahan Frame
Yang selanjutnya penulis mencoba untuk mengatur ukuran jendela webcam dengan menyisipkan code berikut.
cam.set(3, 640) #ubah lebar cam
cam.set(4, 480) #ubah tinggi cam
Kemudian copy-kan semua kode yang ada pada link ini. Selanjutnya buka Notepad atau editor teks yang kalian miliki dan buat file baru dan paste-kan kode-kode tersebut lalu simpan dengan nama “haarcascade_frontalface_default.xml”.
Berikut adalah kode yang digunakan untuk mendeteksi wajah pada Python :
import cv2
cam = cv2.VideoCapture(0)
cam.set(3, 640) #ubah lebar cam
cam.set(4, 480) #ubah tinggi cam
faceDetector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
while True:
retV, frame = cam.read()
abuAbu = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = faceDetector.detectMultiScale(abuAbu, 1.3, 5)
for (x, y, w, h) in faces:
frame = cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow('Webcamku',frame)
#cv2.imshow('Webcam - Grey', abuAbu)
k = cv2.waitKey(1) & 0xFF
if k == 27 or k == ord('q'):
break
cam.release()
cv2.destroyAllWindows()
simpan kode diatas dengan nama file “deteksiwajah.py”, maka hasilnya akan menjadi seperti berikut.
Face Recognition yaitu Merekam Wajah
Langkah selanjutnya adakah merekan wajah.
Terlebih dahulu kita buat folder yang akan menjadi tempat penyimpanan hasil rekam wajah. Letak folder ini harus dalam satu direktori dengan file “deteksiwajah.py” sebelumnya. Beri nama folder ini yaitu “datawajah”, kemudian buat file baru yaitu untuk merekan wajah dengan nama file “rekamdatawajah.py” dan copy-paste kode berikut kedalam file rekam wajah tersebut.
import cv2, os
wajahDir = 'datawajah'
cam = cv2.VideoCapture(0)
cam.set(3, 640) #ubah lebar cam
cam.set(4, 480) #ubah tinggi cam
faceDetector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
#eyeDetector = cv2.CascadeClassifier('haarcascade_eye.xml')
faceID = input("Masukkan Face ID yang akan Direkam Datanya [kemudian tekan ENTER]: ")
print("Arahkan wajah Anda ke depan webcam. Tunggu proses pengambilan data wajah selesai..")
ambilData = 1
while True:
retV, frame = cam.read()
abuAbu = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = faceDetector.detectMultiScale(abuAbu, 1.3, 5)
for (x, y, w, h) in faces:
frame = cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
namaFile = 'wajah.'+str(faceID)+'.'+str(ambilData)+'.jpg'
cv2.imwrite(wajahDir+'/'+namaFile,frame)
ambilData += 1
cv2.imshow('Webcamku',frame)
#cv2.imshow('Webcam - Grey', abuAbu)
k = cv2.waitKey(1) & 0xFF
if k == 27 or k == ord('q'):
break
elif ambilData>=30:
break
print("Pengambilan data selesai")
cam.release()
cv2.destroyAllWindows()
Jalankan file Python tersebut, kemudian ketika muncul seperti gambar berikut.
Masukkan ID yang diinginkan untuk menamai hasil rekaman wajah tersebut. Disini penulis memasukkan angka “1” sebagai ID untuk wajah yang akan direkam, lalu tekan ENTER.
Hasil dari rekam wajah ini akan disimpan dalam folder”datawajah” yang sebelumnya telah dibuat.