Face Recognition Using Python (2)

Veronica Yolanda
3 min readJan 6, 2020

--

Assalamu’alaikum Warahmatullahi Wabarakaatuh teman-teman,

Gimana langkah-langkah pengenalan wajah 1? Mudah bukan?

Selanjutnya kita belajar pengenalan wajah 2 yuk, dimana kita akan mendeteksi wajah dari keseluruhan gambar pada frame dan sudah mengarah secara tepat pada wajah

Pada langkah kedua ini, kita memerlukan file haarcascade default dari OpenCV yang digunakan dalam mendeteksi objek pada image digital pada link berikut https://github.com/opencv/opencv/tree/master/data/haarcascades . Simpan file “haarcascade_frontalface_default.xml” di folder yang telah kita buat sebelumnya “C:/capture/”.

Setelah berhasil didownload, salin koding berikut pada Notepad++ dan simpan di dalam folder “capture” dengan nama tangkapwajah.py . Gunakan classcv2.CascadeClassifier dan detectMultiScale metode untuk mendeteksi semua wajah dalam gambar.

import cv2, time
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0faceDetect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')while True:
a = a + 1
check, frame = video.read()
print(check)
print(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces=faceDetect.detectMultiScale(gray,1.3,5);
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("wajah",frame) key = cv2.waitKey(1)
if key == ord('q'):
break
print(a)
video.release()
cv2.destroyAllWindows()

Sedikit penjelasan dari koding tersebut,

Pada line 9 menggunakan gambar dengan skala abu-abu karena OpenCV sebagian besar beroperasi dalam skala abu-abu

Pada line 10 menggunakan metode detectMultiScale untuk mendeteksi semua wajah atau objek dalam gambar

Pada line 10, 1.3 adalah faktor skala atau scaleFactor dan 5 adalah minNeighbours. ScaleFactor merupakan parameter untuk menentukan seberapa besar ukuran gambar berkurang pada setiap skala gambar, sedangkan minNeighbors mendefinisikan seberapa banyak objek yang terdeteksi di sekitar untuk menemukan wajah

Pada line 11, fungsi (x,y,w,h) untuk mendeteksi wajah dan menghasilkan nilai x dan y (koordint titik pojok kiri atas wajah), nilai w (width = lebar kotak), dan nilai h (height = tinggi kotak) .

kemudian bukalah command prompt dan jalankan perintah berikut

C:/capture> python tangkapwajah.py

Maka akan muncul hasil tangkapan wajah sebagai berikut

Selanjutnya kita ingin mengidentifikasi nama pemilik wajah. Siapkan terlebih dahulu folder baru dibawah folder “C:/capture” yaitu folder “DataSet” kemudian sisipkan file haarcascade ke dalam koding sebagai berikut.

import cv2, time
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
faceDetect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
id = input('masukkan id user ')
while True:
a = a + 1
check, frame = video.read()
print(check)
print(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces=faceDetect.detectMultiScale(gray,1.3,5);
for (x,y,w,h) in faces:
cv2.imwrite("DataSet/User."+str(id)+"."+str(a)+".jpg",
gray[y:y+h,x:x+w])
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
cv2.imshow("wajah",frame)
key = cv2.waitKey(1)
if key == ord('q'):
break
print(a)
video.release()
cv2.destroyAllWindows()

Simpan kembali dengan nama yang sama yaitu tangkapwajah.py. Bukalah command prompt dan jalankan perintah berikut

C:/capture> python tangkapwajah.py

Kemudian akan muncul “masukan id”, ketikkan id=1 untuk mendeteksi wajah kita. Jika ingin mendeteksi wajah orang lain dapat menambahkan id=2 dan seterusnya

Hasil penangkapan gambar dari deteksi wajah tersebut akan tersimpan dalam folder “DataSet”. Untuk meminimalkan banyaknya gambar yang ditangkap sebanyak 25 gambar saja, tambahkan perintah sebagai berikut

if (a>24):

Sehingga,

import cv2, time
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
faceDetect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
id = input('masukkan id user ')
while True:
a = a + 1
check, frame = video.read()
print(check)
print(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces=faceDetect.detectMultiScale(gray,1.3,5);
for (x,y,w,h) in faces:
cv2.imwrite("DataSet/User."+str(id)+"."+str(a)+".jpg",
gray[y:y+h,x:x+w])
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
cv2.imshow("wajah",frame)
key = cv2.waitKey(1)
if (a>24):
break
print(a)
video.release()
cv2.destroyAllWindows()

Simpan kembali dengan nama yang sama yaitu tangkapwajah.py. Bukalah command prompt dan jalankan perintah berikut

C:/capture> python tangkapwajah.py

Maka akan muncul hasil tangkapan wajah sebagai berikut

Berikut merupakan hasil tangkap layar menggunakan koding tangkapwajah.py pada user 1 dan 2 yang disimpan didalam folder “Dataset”.

Yeyy berhasil! Gimana? Mudah kan?

Yuk kita lanjut ke tutorial pengenalan wajah 3:D

.

Kalau ada yang kurang dimengerti dan ingin ditanyakan silahkan hubungi saya via email 17611018@students.uii.ac.id

.

Wassalaamu’alaikum warahmatullaahi wabarakaatuh

Referensi

  1. “RB Fajriya Hakim (On Medium)” https://medium.com/@986110101
  2. Fabien, M. (n.d.). A guide to Face Detection in Python. Retrieved from toward data science: https://towardsdatascience.com/a-guide-to-face-detection-in-python-3eab0f6b9fc1

--

--