Face Recognition 2

Latifa Ega Nadhira
4 min readJan 10, 2021

--

Pengenalan wajah menggunakan python dan OpenCV haarcascades

Assalamualaikum wr. wb.

Pada kesempatan kali ini saya akan membuat face recognition bagian 2 dengan menggunakan python dan OpenCV haarcascades. Tujuan yang diinginkan adalah mendeteksi wajah orang dari kamera laptop dan menyimpan tangkapan gambar dalam folder, lalu mengidentifikasi nama pemilik wajah.

Seperti yang telah dijelaskan pada Face Recognition 1, coding untuk menangkap layar adalah sebagai berikut.

import cv2, time
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
while True:
a = a + 1
check, frame = video.read()
print(check)
print(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow(“tangkap”, gray)
#cv2.waitKey(0)
key = cv2.waitKey(1)
if key == ord(‘q’):
break
print(a)
video.release()
cv2.destroyAllWindows()

Kemudian, saya akan melakukan pengkelasan dengan coding yang telah disediakan oleh OpenCV. Langkah awal yang dilakukan adalah klik link berikut, lalu cari file “haarcascade_frontalface_default.xml”, simpan file pada folder yang telah dibuat sebelumnya yaitu E:\capture.

Tambahkan coding untuk deteksi wajah seperti berikut untuk line(5),

faceDetect = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

dan coding berikut untuk line(13)-(16).

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)

Sehingga keseluruhan coding seperti berikut.

import cv2, time
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
faceDetect = cv2.CascadeClassifier(cv2.data.haarcascades + "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()

Tampilan pada SublimeText seperti berikut.

Line(5) adalah perintah untuk membaca file xml yang telah disimpan pada folder capture. Pada line(14) terdapat perintah untuk bentuk dan warna frame yaitu 0,255,0 maka bingkai yang muncul warna hijau, line (17) adalah perintah untuk mengakhiri tangkap layar jika menekan q pada keyboard.

Simpan file tersebut dengan nama tangkapwajah.py pada folder capture. Buka command prompt dan jalankan file dengan mengetik perintah berikut.

E:\capture\tangkapwajah.py

Hasil yang dimunculkan seperti berikut.

Selanjutnya, untuk mengidentifikasi id pemilik wajah dan menyimpan hasil tangkapan layar diperlukan folder baru untuk data wajah. Buat folder DataSet di dalam folder capture yang telah dibuat. Kemudian, tambahkan coding berikut pada file tangkapwajah.py.

id = input(‘masukkan id user ‘)

lalu,

cv2.imwrite(“DataSet/User.”+str(id)+”.”+str(a)+”.jpg”,
gray[y:y+h,x:x+w])

Maka coding tangkap.py secara keseluruhan adalah sebagai berikut.

import cv2, time
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
faceDetect = cv2.CascadeClassifier(cv2.data.haarcascades + "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,255,0),2)
cv2.imshow("wajah",frame)
key = cv2.waitKey(1)
if key == ord('q'):
break
print(a)
video.release()
cv2.destroyAllWindows()

Tampilan dalam SublimeText seperti berikut.

Line(6) adalah perintah untuk memasukkan id yang akan menjadi identitas wajah, line(15)-(16) adalah perintah untuk menyimpan hasil tangkapan layar ke dalam folder DataSet, dengan ekstensi file jpg, dan format nama User.(id).(nomor).jpg. Buka command prompt dan jalankan perintah,

E:\capture\tangkapwajah.py

Hasilnya akan muncul seperti gambar berikut.

Ketik 1 untuk id wajah pertama. Lalu enter, kamera akan menyala dan mulai menangkap layar. Tangkapan layar akan berhenti jika menekan q pada keyboard.

Hasil tangkapan wajah akan tersimpan dalam folder DataSet seperti berikut.

Jika ingin membatasi bahwa tangkapan wajah hanya sebanyak 25, ubah coding pada line(20).

if (a>24):

Sehingga coding secara keseluruhan adalah seperti berikut.

import cv2, time
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
faceDetect = cv2.CascadeClassifier(cv2.data.haarcascades + "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,255,0),2)
cv2.imshow("wajah",frame)
key = cv2.waitKey(1)
if (a>24):
break
print(a)
video.release()
cv2.destroyAllWindows()

Pada tampilan SublimeText seperti berikut.

Simpan file tangkapwajah.py tersebut dan jalankan dengan command prompt.

E:\capture\tangkapwajah.py

Hasil gambar yang ditangkap dan disimpan pada folder DataSet sebanyak 25.

Sekian yang dapat saya sampaikan mengenai Face Recognition bagian 2 ini, terima kasih telah mengikuti sampai akhir.

Wassalamualaikum wr.wb.

Referensi :

https://medium.com/@986110101/pengenalan-wajah-2-5152fa2ee5da

--

--

Latifa Ega Nadhira
Latifa Ega Nadhira

Written by Latifa Ega Nadhira

Statistika — Universitas Islam Indonesia

No responses yet