Face Recognition Using OpenCV & Python (Part 3)

PUSPITA PUTRI NABILAH
4 min readJan 15, 2021

--

www.pandasecurity.com

Assalamualaikum Warahmatullahi Wabarakatuh

Hollaa Data Enthusiasts! Di kesempatan ini saya akan melanjutkan pembahasan mengenai face recognition kembali. Di part 2 sebelumnya, komputer telah berhasil untuk mengenali 2 wajah yang berbeda.

Nah, di part 3 ini kita akan mencoba untuk menambahkan informasi wajah dengan menggabungkannya pada database menggunakan SQL Lite.

Yukk langsung ajaa~

Pertama, buka google dan ketikkan “SQLiteStudio”

Kemudian unduh SQLiteStudio tersebut. Ekstrak folder SQLiteStudio dan pindahkan ke “C:/BIML/capture/SQLiteStudio”.

Kemudian double klik SQLiteStudio, lalu pada menu utama klik Database > add a database.

Kemudian akan muncul tampilan seperti berikut ini. Buatlah nama database, misalkan kita membuat nama database yaitu “datawajah”. Lalu klik ikon ‘+’ untuk menambahkan database.

Kemudian simpan di folder “C:/BIML/capture” dengan klik “Save”, sehingga menjadi C:/BIML/capture/datawajah.db”.

Setelah berhasil, kemudian klik OK kembali. Maka akan muncul database baru yaitu datawajah.db.

Kemudian kita akan membuat tabel dengan klik ikon ‘Create a table’

Buat tabel dengan nama “orang”, kemudian klik “commit” dan “add a column”.

Sehingga muncul tampilan berikut.

Dengan cara yang sama, buat variabel lainnya seperti Nama, Umur, dan Gender. Sehingga hasilnya seperti ini.

Kemudian klik centang hijau (commit) dan akan muncul tampilan seperti berikut.

Selanjutnya kita akan mencoba menambahkan data pada tabel. Pada menu klik “Data” dan klik insert rows untuk setiap kali membuat data baru.

Jika pengisian telah selesai, maka klik centang hijau (commit) yang berarti perubahan/penambahan data baru sudah benar.

Ingat “datawajah.db” ini berada dalam folder yang sama.

Selanjutnya kembali ke koding terakhir kita, untuk menyambungkan antara data SQL dengan koding pengenalan wajah, seperti berikut.

import cv2,os, time
import numpy as np
from PIL import Image
import pickle
import sqlite3
faceDetect=cv2.CascadeClassifier('haarcascade_frontalface_default.xml');
video=cv2.VideoCapture(0)
a=0
recognizer=cv2.face.LBPHFaceRecognizer_create();
recognizer.read("c://BIML//capture//training//training.xml")
id=0
fontface=cv2.FONT_HERSHEY_SIMPLEX
fontscale=1
fontcolor=(0,0,255)
path='DataSet'
def getProfile(id):
conn=sqlite3.connect("datawajah.db")
cmd="SELECT * FROM orang WHERE id="+str(id)
cursor=conn.execute(cmd)
profile=None
for row in cursor:
profile=row
conn.close()
return profile
while(True):
check, frame=video.read();
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces=faceDetect.detectMultiScale(gray,1.3,5);
for(x,y,w,h) in faces:
a=a+1
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
id,conf=recognizer.predict(gray[y:y+h,x:x+w])
profile=getProfile(id)
if(profile!=None):
cv2.putText(frame,str(profile[1]),(x,y+h+30),fontface,fontscale,fontcolor)
cv2.putText(frame,str(profile[2]),(x,y+h+60),fontface,fontscale,fontcolor)
cv2.putText(frame,str(profile[3]),(x,y+h+90),fontface,fontscale,fontcolor)
#cv2.putText(frame,str(profile[4]),(x,y+h+100),fontface,fontscale,fontcolor);
cv2.imshow("wajah",frame);
if(cv2.waitKey(1)==ord('q')):
break
print(a)
cam.release()
cv2.destroyAllWindows()

Bila menggunakan text editor maka tampilannya seperti berikut.

Simpan koding tersebut dengan tangkapwajahlengkap.py dan letakkan di dalam folder C:/BIML/capture/.

Jalankan perintah tersebut melalui command prompt.

C:/BIML/capture/> python tangkapwajahlengkap.py

Dannn, hasilnya seperti berikut.

Horeee, berhasil!

Identitas menjadi lebih lengkap dengan menambahkan umur dan jenis kelamin. Nah, kita juga masih bisa menambahkan informasi lainnya dengan menambahkan kolom untuk setiap identitas yang diinginkan.

Terima kasih telah mengikuti pembahasan face recognition dari part 1 sampai part 3.

Semoga bisa bermanfaat untuk teman-teman semua!

Wassalamualaikum Warahmatullahi Wabarakatuh.

Referensi:

  1. https://medium.com/@986110101/pengenalan-wajah-5-cb65f3726e44
  2. https://gifadn.medium.com/face-recognition-part-3-end-30f56e59ce2a

--

--