Contents
Pada tutorial sebelumnya sudah kita pelajari bagaimana mendeteksi wajah (face detection) pada sebuah gambar yang ditangkap kamera. Nah, pada tutorial kali ini, kita coba melakukan percobaan yang lebih advanced lagi, yakni dengan mengenali wajah yang terdeteksi tadi sesuai identitasnya (face recognition). Dengan demikian, setiap ada wajah yang terdeteksi kamera, maka komputer akan langsung menerjemahkannya menjadi sebuah nama dari wajah orang tersebut. Sama seperti sebelumnya, kita masih menggunakan openCV – Python untuk script-nya dan menggunakan metode algoritma LBPH (Local Binary Patterns Histograms) untuk project pengenalan wajah kali ini.
Pengenalan LBPH (Local Binary Patterns Histograms)
Apa itu LBPH? LBPH adalah salah satu algoritma pengenalan objek dengan membagi gambar menjadi beberapa bagian kemudian menerjemahkannya menjadi bilangan biner representatifnya dalam bentuk histogram (saya terjemahkan bebas dari sumber aslinya di sini). Dalam LBPH setidaknya ada 4 parameter yang harus kita pahami, yakni ‘Radius’ (radius pusat pixel acuan), ‘Neighbors’ (tetangga pixel acuan), ‘Grid X’, dan ‘Grid Y’ (pembagian gambar). Untuk grid X dan Y, semakin banyak hasilnya akan semakin baik/presisi. Pusing? sama, he he he. Beruntunglah kita ada sekelompok komunitas opensource Computer Vision yang mau membagi source-nya ke publik, yakni OpenCV. Dalam openCV sudah ada subrutin (class) yang sudah mengenkapsulasi semua yang kita butuhkan dalam algoritma LBPH ini, yakni class cv::face::LBPHFaceRecognizer. Dengan class ini kita dapat dengan mudah mengklasifikasikan objek yang terdeteksi sesuai dengan dataset yang kita buat sebelumnya, sehingga tujuan akhir pengenalan objek dapat tercapai

Persiapan Face Recognition OpenCV – Python
Dalam percobaan kali ini, saya menggunakan environment sebagai berikut:
1. Windows 10 – 64 bit
2. OpenCV 4.1.2 (Cara instal bisa dibaca di sini)
3. Python 3.8 (Cara instal bisa dibaca di sini)
Demi kelancaran project sebaiknya Anda tambahkan perintah berikut lewat command prompt:
pip install pillow
kemudian
pip install opencv-contrib-python --user
[AdSense-A]
Tahapan Pengenalan Wajah (Face Recognition) OpenCV – Python
Untuk dapat mengenali wajah sesuai identitasnya menggunakan OpenCV dan Python, setidaknya Anda harus melakukan 3 tahap sebagai berikut:
1. Membuat dataset referensi wajah
2. Mentraining data
3. Melakukan pengenalan wajah (Face Recognition)
Tiga tahap di atas akan kita lakukan menggunakan script yang berbeda. Untuk mudahnya, silahkan download dulu source code-nya di sini. Kemudian ekstrak dalam folder kerja Anda. Kemudian buat subfolder baru di folder tersebut dengan nama ‘dataset’ dan ‘trainer’

Catatan: script di atas di share dari tutorial ini. Dalam tutorial tersebut menggunakan Raspberry Pi, saya coba mem-porting-nya ke Windows 10 dan membuat tutorial step by step-nya dalam artikel ini supaya lebih mudah dipahami dan dipraktekkan
Langkah 1: Jalankan script 01_face_dataset.py melalui command prompt, tunggu sampai muncul window dan meng-capture wajah Anda dalam 30 detik. Program ini akan menghasilkan 30 gambar jpg (grayscale) dalam folder ‘dataset’. Ketika ada prompt ‘enter user id end press ==>’ ketik angka ‘1’ untuk user 1 (misal Anda), ‘2’ untuk wajah orang kedua, ‘3’ untuk orang ketiga dst

Catatan: di tutorial aslinya, menggunakan kamera Raspberry Pi yang diinstal secara terbalik, jadi Anda hilangkan dulu baris ‘img = cv2.flip(img, -1) # flip video image vertically’ pada file 01_face_dataset.py
Langkah kedua jalankan program kedua (02_face_training.py). Program ini akan menghasilkan file ‘trainer.yml’ di folder trainer (pastikan file ini ada ya)
py 02_face_training.py
atau mungkin di tempat Anda seperti ini
python 02_face_training.py
Catatan: pastikan path file yang akan dijalankan ya. Contoh: ‘python d:/ai/lat/py 02_face_training.py’
[AdSense-A]
Langkah ketiga tinggal Anda jalankan file yang ketiga, yakni 03_face_recognition.py. Jangan lupa hapus baris script ‘img = cv2.flip(img, -1)’ terlebih dahulu. Ohya, edit dulu nama user id sesuai dengan yang Anda masukkan pada langkah 1 pada script 03_face_recognition.py pada baris names = [‘None’, ‘Papah Ajie’, ‘Raihan’, ‘Mamah Wiwied’, ‘Z’, ‘W’] (baris 16 pada script di bawah). Berikut script pengenalan wajah – face recognition – dengan OpenCV dan Python, dengan sedikit modifikasi dari versi aslinya
import cv2
import numpy as np
import os
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('trainer/trainer.yml')
cascadePath = "haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);
font = cv2.FONT_HERSHEY_SIMPLEX
#iniciate id counter
id = 0
# names related to ids: example ==> Marcelo: id=1, etc
names = ['None', 'Papah Ajie', 'Raihan', 'Mamah Wiwied', 'Z', 'W']
# Initialize and start realtime video capture
cam = cv2.VideoCapture(0)
cam.set(3, 640) # set video widht
cam.set(4, 480) # set video height
# Define min window size to be recognized as a face
minW = 0.1*cam.get(3)
minH = 0.1*cam.get(4)
while True:
ret, img =cam.read()
#img = cv2.flip(img, -1) # Flip vertically
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor = 1.2,
minNeighbors = 5,
minSize = (int(minW), int(minH)),
)
for(x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
id, confidence = recognizer.predict(gray[y:y+h,x:x+w])
# Check if confidence is less them 100 ==> "0" is perfect match
if (confidence < 100):
id = names[id];
confidence = " {0}%".format(round(confidence));
#confidence = " {0}%".format(round(100-confidence))
else:
id = "unknown"
confidence = " {0}%".format(round(100 - confidence));
cv2.putText(img, str(id), (x+5,y-5), font, 1, (255,255,255), 2)
cv2.putText(img, str(confidence), (x+5,y+h-5), font, 1, (255,255,0), 1)
cv2.imshow('camera',img)
k = cv2.waitKey(10) & 0xff # Press 'ESC' for exiting video
if k == 27:
break
# Do a bit of cleanup
print("\n [INFO] Exiting Program and cleanup stuff")
cam.release()
cv2.destroyAllWindows()
Jika segala sesuatunya berjalan lancar maka Anda tampilan di laptop Anda adalah seperti ini

Gimana, ganteng mana papah sama anaknya? he he he. Silahkan dicoba program-program di atas. Cukup mudah, kok. Jika ada kesulitan bisa disampaikan di kolom komentar di bawah. Secepat mungkin akan saya reply. Dari contoh script di atas, nantinya akan saya kembangkan untuk membuat mesin absensi berbasis pengenalan wajah, dipadukan dengan door-lock yang hanya bisa membuka pintu jika wajahnya dikenali (authorized). Nantikan tutorial berikutnya ya….
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
ka, saya minta source codenya dong ka, saya tidak bisa mengcopy file codenya
coba lagi kak
Mantap Pak, Salam buat Mas Raihan dari Dzaky Habib yang lagi belajar Online dengan Ustadz/Ustadzah IBAS Klaten akibat dampak Corona Virus
terima kasih mas Dzaky, salam buat ummi-nya dari ummi raihan 🙂
Assalamualaikum…..Pa untuk cara install openCV dan python nya ada dimana..?
waalaikumsalam wr wb. Bisa dibaca di artikel Deteksi Wajah (Face Detection) dengan OpenCV dan Python
pa kok saya jalani program face recognition nya cuma bisa baca id 1 (marcelo) padahal sudah ada 5 id yang sudah tersimpan tapi pas wajah id yg lain ttep marcelo yang ke detect?
coba perhatikan script baris 16 mas. Sudah disesuaikan, belum?
Makasih banyak pak akhirnya dah nyari nyari artikel tentang facerecognition dan ini yang paling jelas dan work berhasil untuk mengenali wajah
sama-sama mas
kelanjutan dari artikel ini udah dibuat blum om, yg bisa dipadukan dengan doorlock
belum, itu rencana thesis saya. Nanti kalo udah selesai saya share paper nya
if (confidence<100)
Tidak berfungsi pak,error syntax bagaimana ya solusinya?
errornya apa? apakah masalah indentation? kalo iya coba cek posisi baris script, delete dulu sampai batas kiri kemudian urutan dengan atasnya. Python agak ribet kalo masalah indentation. Sebaiknya pake notepad++ agar terlihat indentation-nya
kak kok syntax error y
error-nya apa?
Kok ada error ya mas waktu pas jalankan di step ke 2 ini:
py 02_face_training.py
apa errornya?
kak, pada code ini “recognizer = cv2.face.LBPHFaceRecognizer_create()”
katanya gini kak
” module ‘cv2.cv2’ has no attribute ‘face’ “
kak, pada code ini “recognizer = cv2.face.LBPHFaceRecognizer_create()”
katanya gini kak
” AttributeError: module ‘cv2.cv2’ has no attribute ‘face’ “
coba downgrade ke python 2.7 kemudian instal opencv lagi
Sudah dicoba di python 2.7 masih sama error mas:
recognizer = cv2.face.LBPHFaceRecognizer_create()
AttributeError: ‘module’ object has no attribute ‘face’
opencv nya diinstal lagi juga mas
Bang file 02_face_training error
Traceback (most recent call last):
File “02_face_training.py”, line 46, in
faces,ids = getImagesAndLabels(path)
File “02_face_training.py”, line 36, in getImagesAndLabels
id = int(os.path.split(imagePath)[-1].split(“.”)[1])
ValueError: invalid literal for int() with base 10: ‘jpg’
kurang tau juga mas, harus pegang laptopnya saat troubleshoot. Tapi coba gini mas, samakan aja semua environment seperti yang saya sebutka di artikel, insya Allah berhasil
pak mau tanya, jika pengenalan wajah digunakan untuk absensi, bagaimana cara membuat database nya jika wajah kita ke record kemudian masuk database sebagai daftar kehadiran (proses dari python ke sql)?
untuk python ada wrapper (connector) ke mysql. Untuk install ketik pip install mysql-connector-python
yang di kirim ke mysql data yang mana yah bagusnya. maaf oot
isi trainer.yml nya itu apa ya ?
hasil pengenalan wajah berdasar algoritma LBPH
mas…bisa gak ya openCV dikombinasikan dengan embarcadero(delphi) mas??
syukur bisa dibantu mas.. rencana buat absensi dg facerecognition dg delphi/embarcadero
udah ada yang buat library opencv untuk delphi, tapi saya belum pernah coba 🙂
Di tunggu updaten absensi berbasis pengenalan wajah dan dipadukan dengan door-lock’y mas
siap mas 🙂
mas untuk cara install OpenCV 4.1.2 ga ada linknya yah? maaf baru nyobe
udah ada di artikel mas, pip install opencv-contrib-python –user
om, mau nanya nih,, kalo training data image nya sampe jutaan bisa ga ya? apa ngehang?
bisa, tergantung kemampuan prossesor (CPU) dan RAM juga
mantap, langsung berhasil. terima kasih tutorialnya
pak ijin bertanya pada file 03 face recognition kenapa muncul pesan eror ini ya
line 60, in <module>
cv2.imshow(‘camera’,img)
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-q22f2gn5\opencv\modules\highgui\src\window.cpp:651: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvShowImage’
pake python brp? opencv versi brp?
kak mau tanya, untuk di step Langkah 1 muncul seperti ini padahal sudah di hapus baris ‘img = cv2.flip(img, -1) # flip video image vertically’
tapi malah keluar gini
File “D:\AI\opencv\OpenCV-Face-Recognition-master\FacialRecognition\01_face_dataset.py”, line 12, in <module>
import cv2
ModuleNotFoundError: No module named ‘cv2’
gimana ya kak? semoga kakak baca
modul opencv nya belum terinstal dengan baik. Coba diulangi lagi instalasinya, pastikan working path nya sama dengan python supaya bisa dikenali
Keren mas artikelnya buat referensi print to hologram
halo pak terima kasih artikelnya
saya menemui kesulitan saat hendak mau train datanya, jadi saat mau menjalankan facetraining tidak mau run, asumsi kesalahan seperti ada kaitannya dengan path, folder saya simpan di C:\Users\Nuzhul\OpenCV-Face-Recognition-master>
jadi sampai sekarang saya masih belum bisa mendapatkan hasil pengenalan wajah di lbphnya
saya juga sudah pastikan folder trainernya ada
error message -nya apa ya?
D:\OpenCV-Face-Recognition-master\FacialRecognition>python 02_face_training.py
[INFO] Training faces. It will take a few seconds. Wait …
Traceback (most recent call last):
File “02_face_training.py”, line 46, in
faces,ids = getImagesAndLabels(path)
File “02_face_training.py”, line 27, in getImagesAndLabels
imagePaths = [os.path.join(path,f) for f in os.listdir(path)]
FileNotFoundError: [WinError 3] The system cannot find the path specified: ‘dataset
keluar error begini bang
folder data set sama trainer nya gak ada bang dari link yan dikasih tadi apa itu penyebabnya ?
create folder sendiri mas
bang kan udh hidup nih kamera ny dari step 1 tpi udh ditunggguin gak capture2 juga dan hasil ny gak ada padahal sudah dibuat folder nya
keluar error begini bang
[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-i1s8y2i1\opencv\modules\videoio\src\cap_msmf.cpp (434) `anonymous-namespace’::SourceReaderCB::~SourceReaderCB terminating async callback
ikuti step by step di artikel aja ya
Pak, klo error d step 2 seperti ini bagaimna solusinya?
source code masih sama seperti d github. yg file 02_face_training. alhasil tidak keluar file trainer.yml
F:pythonOPENCVdeteksinama>python 02_face_training.py
[INFO] Training faces. It will take a few seconds. Wait …
Traceback (most recent call last):
File “F:pythonOPENCVdeteksinama 2_face_training.py”, line 46, in
faces, ids = getImagesAndLabels(path)
File “F:pythonOPENCVdeteksinama 2_face_training.py”, line 34, in getImagesAndLabels
img_numpy = np.asfarray(PIL_img, ‘uint8’)
File “”, line 5, in asfarray
File “C:UsersYAZI ADITYASAppDataLocalProgramsPythonPython39libsite-packagesnumpylibtype_check.py”, line 114, in asfarray
return asarray(a, dtype=dtype)
TypeError: __array__() takes 1 positional argument but 2 were given
line 114 isinya apa ya?
pak aji mau tanya saya sudah menjalankan coding tersebut di perangkat raspberry pi model 3 tapi kenapa sering salah mengenali ya?jadi orang pertama di kenal jadi orang kedua
lalu kenapa prosentase kemiripannya rendah ya di bawah 60% padahal orang yang sama lalu ngelag pula?
kalo ngelag karena resource komputasi raspberry pi 3 memang kurang cepat untuk menjalankan algoritma kecedersan buatan. Sebaiknya upgrade ke raspberry pi 4 atau jetson nano (sudah punya GPU selain CPU)
maaf mas saya mau tanya knp saat menjalankan langkah 1 lama sekali untuk mengcapture 1 gambar dan terus menunggu
[INFO] Initializing face capture. Look the camera and wait …
stuck disitu. mohon pencerahannya mas
ada error ngga mas?
gak ada yang eror. pas di cmdnya terus begini
[INFO] Initializing face capture. Look the camera and wait …
link source code-nya tidak ada hanya haarcascade_frontalface_default.xml.
Bisa share source nya gan?
yg mana yg dimaksud ya?
bapak
apakah aplikasi ini hanya bisa deteksi untuk 2 orang saja ya?
bisa banyak pak, tergantung kita yg men-define
izin menambahkan ya pak buat yang ketika error utk menjalankan file 2 dan 3 yang terdapat error di recognizer nya bisa jalankan ini terlebih dahulu di cmd:
pip install opencv-contrib-python
baik mas, terima kasih atas informasinya
ada erro bgni , running di windows. bisa dibantu ?
Traceback (most recent call last):
File “C:/Python/Python39/facedetection.py”, line 10, in
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-95hbg2jt\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
coba cek webcam nya dl mas
This works perfectly, and I don’t need dlib….. After all this headache trying to install dlib, and here is the answer WITH NO DLIB !!! Yeah, thank you Marcelo. Now I have to alter the program, as my photo shows that I am Marcelo, but I’m not, I’m Erica. LOL
yes, you need update identifier (your name) as order