Contents
Satu satu cabang kecerdasan buatan atau Artificial Intelligence (AI) adalah ‘Computer Vision’ (CV). Sesuai namanya, Computer Vision ini adalah salah satu bidang ilmu yang mempelajari bagaimana suatu obyek gambar nyata yang sifatnya analog, diintepretasikan komputer menjadi bentuk-bentuk digitalnya untuk diolah lebih lanjut sesuai kebutuhan. ‘Komputer’ disini maknanya luas, tidak hanya komputer yang kita kenal seperti ‘Personal Computer’ (PC), desktop, laptop tapi juga controller (CPU) lain yang masuk ranah embedded system yakni Raspberry Pi, Orange Pi, Banana Pi atau mungkin ‘Pi’ – ‘pi’ yang lain :). Cirinya adalah suatu controller/CPU tersebut memiliki operating system yang menunjang pemrosesan objek gambar. Jadi kalau melihat syarat seperti ini rasanya Arduino dan keluarganya belum mampu untuk mendukung Computer Vision secara langsung.
Sekilas tentang OpenCV dan Python
Baiklah, tutorial kita kali ini adalah mencoba memproses gambar yang ditangkap kamera untuk kita deteksi jika ada wajah manusia di dalamnya. Kedengarannya sulit ya? Sama, dulu saya juga menganggapnya suatu hal yang teramat sulit. Tapi beruntunglah kita ada sekelompok komunitas opensource yang bersedia membuka source code-nya secara gratis dalam bentuk library OpenCV. Ya, OpenCV ini merupakan library yang akan banyak membantu kita dalam menerjemahkan sebuah gambar. OpenCV ini ditulis dalam bahasa C tapi dapat juga digunakan dalam bahasa lain seperti Python. Kenapa menggunakan Python? Yang pertama, Python ini merupakan bahasa pemrograman tingkat tinggi sehingga memiliki beberapa keunggulan, misalnya sintaks yang sederhana, berorientasi pada objek (OOP), dan memiliki banyak library yang akan membantu Anda men-simplify program Anda. Dan satu lagi, Python memiliki satu variabel array multifungsi yang tidak dimiliki bahasa pemrograman lain, yakni ‘NumPy’ yang sekali lagi akan mempermudah proses pemrograman Anda. Dan alasan kedua mengapa menggunakan Python, karena banyak tutorialnya di internet, jadi kalau ada kesulitan tinggal googling aja, he he he.
Script Deteksi Wajah OpenCV – Python
Ok, mari kita mulai percobaannya. Untuk tutorial kali ini saya menggunakan:
1. OS Windows 10 (64 bit)+ built-in camera
2. Python 3.8 (64 bit)
3. Library OpenCV 3.0
Untuk persiapan silahkan download dulu Python-nya. Tinggal googling aja pasti ketemu source-nya (download versi terbaru ya). Jangan lupa mencentang ‘Add Puthon 3.x to Path’ saat instalasi ya. Untuk lebih detailnya bisa baca artikel berikut
Jika sudah berhasil instal Python, langkah selanjutnya adalah instal library opencv. Silahkan buka command prompt dan ketikkan command sbb (pastikan ada koneksi internet ya)
pip install opencv-python
Catatan:
1. Jika sewaktu proses instalasi Python anda mencentang option Add Python 3.x to Path, maka Anda bisa mengetikkan perintah di atas di sembarang path di command prompt
2. Jika perintah di atas gagal dieksekusi, ada kemungkinan package installer ‘pip’ belum terinstal di laptop Anda
Jika semua sudah terintal dengan baik, salin script berikut dan beri nama (misalnya) ‘facedetection.py’.
import cv2 face_cascade = cv2.CascadeClassifier('d:/python/haarcascade_frontalface_default.xml') cap = cv2.VideoCapture(0) while 1: ret, img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) roi_gray = gray[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] cv2.imshow('deteksi wajah',img) k = cv2.waitKey(30) & 0xff if k == 27: break cap.release() cv2.destroyAllWindows()
Keterangan program:
[Baris 1]: import library opencv ke program
[Baris 3]: mendefinisikan pengenal wajah. Kali ini ini akan menggunakan classifier dengan teknik Haar Cascade yang sudah didefinisikan dalam file haarcascade_frontalface_default.xml. Anda bisa mengunduh file tersebut di sini. Letakkan file xml tersebut satu folder dengan program python Anda (facedetection.py)
[Baris 5]: mendefinisikan instance object untuk kamera
[Baris 7]: perulangan yang selalu bernilai ‘True’. Artinya program akan terus berjalan sampai ada penekanan tombol ‘Esc’ (Baris 19-21)
[Baris 8-9]: mengambil gambar dari kamera kemudian dijadikan hitam putih (gray)
[Baris 10]: mendeteksi wajah, dan menghasilkan nilai x,y (koordinat titik pojok kiri atas wajah), nilai w (width=lebar kotak) dan h (height=tinggi kotak)
[Baris 12-15]: menggambar ROI (Region of Interest) dalam bentuk kotak warna biru sesuai koordinat dan dimensinya (nilai x, y, w, h)
[Baris 18]: menampilkan window
[Baris 19-21]: mendeteksi penekanan tombol ESP untuk keluar program
[Baris 23-24]: destroy object kamera dan menutup windows
Ada beberapa cara untuk bekerja dengan Python di Windows:
1. Menggunakan editor text biasa (Notepad, Notepad++), simpan dalam bentuk file python (*.py), kemudian running lewat command prompt dengan perintah
python file_python.py
2. Menggunakan IDE (Integrated Development Environment) bawaan Python yakni IDLE
3. Menggunakan IDE pihak ketiga, yakni PyCharm buatan JetBrain
Catatan: Untuk sementara dan untuk mudahnya kita akan gunakan cara kedua, walaupun sebenarnya IDLE ini punya kekurangan tidak terdapat tulisan baris script. Baris script ini sangat kita butuhkan saat proses debugging jika ada script/sintaks error.
Tampilan Program Deteksi Wajah OpenCV Python
Buka IDLE lewat start menu-Python 3.8-IDLE (Python 3.8 64-bit). Kemudian open file yang tadi Anda simpan (facedetection.py). Kemudian running file tersebut melalui menu Run-Run Module atau dengan menekan tombol F5
Sesaat kemudian kamera di laptop Anda akan aktif dan menampilkan gambar tangkapannya. Jika wajah Anda ada di sana maka akan ada kotak biru yang akan mengikuti kemanapun wajah Anda bergerak. Selamat, Anda sudah berhasil mendeteksi wajah menggunakan OpenCV dan Python 🙂 . Untuk keluar program, Anda bisa menekan tombol ESC. Tutorial berikutnya akan coba saya bahas bagaimana mengenali wajah sesuai nama orang tersebut (face recognition), tidak hanya mendeteksi saja (face detection)
Update: tutorial tentang face recognition bisa di baca di artikel ‘Pengenalan Wajah (Face Recognition) dengan OpenCV dan Python‘
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
saya kok masih gagal terus yamaster?
gagalnya dimana?
jika gagal hapus & 0xff
terima kasih atas infonya, memang kalo di web langsung di copy paste kadang muncul karakter tsb
Saya meng-instal Python ver.3.8.3, Ada muncul error, setelah camera meng-capture…
seperti dibawah ini :
Traceback (most recent call last):
File “D:\Python_3_8_3\facedetection.py”, line 19, in
k = cv2.waitKey(30) &0xff
NameError: name ‘amp’ is not defined
amp dihapus aja mas, karakter itu krn copy dari internet (bukan bagian dari script)
mas maaf file xmlnya kok ngga bisa di download ya di githubnya. boleh di share nda hehehe
masuk ke root folder link github diatas, nanti bisa di download. Atau bisa copy kemudian paste di editor (mis: notepad) kmd save dengan ekstension .xml
Mas.. saya kok ga bisa keluar kotaknya ya.. untuk deteksi gambar bisa keluar kotaknya.untuk deteksi video kok ga keluar kotaknya.. apa yang salah ya?
harusnya keluar sih, coba cek library opencv nya
Kak, kenapa di saya kameranya cuma kebuka sebentar terus nutup lagi ya kak?
bisa jadi karena ada library yang dibutuhkan belum terinstal dengan baik. Ada message error ngga?
Traceback (most recent call last):
File “C:/Python/Python39/facedetection.py”, line 10, in <module>
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’
Bagaimana ya mas
ini running di windows atau raspberry?
saya running di raspberry pi 3b mas tapi masih gagal kenapa ya itu?
traceback (most recent call last):
file “home/pi/Basic-openCV-Programming/facedetect.py”, line 9, in
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
cv2.error: OpenCV(3.4.6) /home/pi/opencv-python/opencv/modules/objdetect/src/cascadedetect.cpp:1698:
error: (-215:Assertion failed) !empty() in function ‘detectMultiScale’
error pada bagian faces = face_cascade.detectMultiScale(gray, 1.3, 5) kenapa ya mas? saya menjalankannya pada raspbery pi 3b. terimakasih mas
kalo di raspberry pi coba kasih command ini dulu lewat terminal: sudo modprobe bcm2835-v4l2. Kalo masih ga bisa cek koneksi wiring kameranya ata cek path file haar cascade-nya (sebaiknya menggunakan full path)
kenapa muncul error seperti ini ya mas
C:/Users/HP/PycharmProjects/facedetect/facedetection.py
Traceback (most recent call last):
File “C:/Users/HP/PycharmProjects/facedetect/facedetection.py”, line 1, in <module>
import cv2
ModuleNotFoundError: No module named ‘cv2’
library opencv (cv2) belum terinstal dengan baik
kok punya saya indikator kamera nyala tapi gk muncul kotak birunya ya
library opencv nya sudah berhasil diinstal?
Dibagian mana bisa nginstalnya
pip install opencv-python –> udah berhasil belum instalnya?
saya kok ada error di line 1 ‘no module’
Traceback (most recent call last):
File “<frozen importlib._bootstrap>”, line 991, in _find_and_load
File “<frozen importlib._bootstrap>”, line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named ‘cv2’
sudah instal library opencv belum?
Traceback (most recent call last):
File “C:\Users\Asus\AppData\Local\Programs\Python\pengenalan wajah\deteksi wajah.py”, line 10, in
faces = face_cascade.detectMultiScale(gray, 4.5, 1)
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-oduouqig\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
bagaimana ya mass kalau jadi kayak gini?
mohon pencerahan nya
pake python versi berapa mas? kalo masih python 2.x coba upgrade pake python 3.x
”’ https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_eye.xml ”’ import cv2, os wajahDir = ‘datawajah’ cam = cv2.VideoCapture(0) cam.set(3, 640) cam.set(4, 480) 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(“Tatap wajah Anda ke depan dalam 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,255),2) namaFile = ‘wajah.’+str(faceID)+’.’+str(ambilData)+’.jpg’ cv2.imwrite(wajahDir+’/’+namaFile, frame) ambilData += 1 roiAbuAbu = abuAbu[y:y+h,x:x+w] roiWarna = frame[y:y+h,x:x+w] eyes = eyeDetector.detectMultiScale(roiAbuAbu) for (xe, ye, we,… Read more »
Masukkan face ID yang akan direkam datanya [kemudian tekan ENTER]: 4211420070
Tatap wajah Anda ke depan dalam webcam, Tunggu proses pengambilan data wajah selesai.
Traceback (most recent call last):
File “/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py”, line 31, in
start(fakepyfile,mainpyfile)
File “/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py”, line 30, in start
exec(open(mainpyfile).read(), __main__.__dict__)
File “”, line 19, in
cv2.error: OpenCV(4.3.0) /data/data/ru.iiec.pydroid3/app_HOME/opencv/opencv-python-master/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘detectMultiScale’
[Program finished]
Mas kalau errornya seperti ini knpa?
file haarcascade-nya coba dicek path-nya. Sepertinya script gagal memanggil file tsb
face detection/faceDetection.py”
Traceback (most recent call last):
File “c:\Users\KENTANG\tutorial python\00 template\src\face detection\faceDetection.py”, line 10, in
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-ttbyx0jz\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
kak, ini errornya dibagian yang mana ya?
cek path folder file xml haar cascade classfier-nya mas
cek nya dimana ya kak?
sesuaikan lokasi file haarcascade (xml) dengan definisi lokasi path di script baris 3
cek nya dimana ya kak?
berarti file xml nya itu di taruh di file asli python? bukan satu folderdengan progrma di atas ?
untuk mudahnya definisikan folder file xml secara full (misal d:/folderpython/filepython) di script python-nya (lihat contoh baris 3). Kemudian taruh file haarcascade (xml) di folder tsb
kamera nyala tapi tidak muncul wajah,
cek bagian ‘imgshow’
Traceback (most recent call last):
File “D:/Kerjaan Unhan/Rencana Penelitian/Penampungan beras-Uvi/Belajar Phyton/Webcam akses1.py”, line 9, in
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-xovot0t4\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’
kenapa ini ka?
library opencv nya sudah diinstal belum?
D:\python\venv\Scripts\python.exe D:/python/face_detector.py
Traceback (most recent call last):
File “D:\python\face_detector.py”, line 10, in
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
[ WARN:0] global D:\a\opencv-python\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (438) `anonymous-namespace’::SourceReaderCB::~SourceReaderCB terminating async callback
Process finished with exit code 1
ini gimana ya mas? saya pake phyton 3.10
pastikan file haar cascade (*.xml) sudah benar path-nya. Kalau bingung, jadikan satu folder dengan file programnya, kemudian definisikan tanpa path
makasih pak atas tutorialnya, untuk mengambil data array bagaimana y pak
dengan maksut jika tidak mendeteksi wajah program akan break
tambahan setelah baris 10 sbb:
wajah_terdeteksi=len(faces)
jika variabel ‘wajah_terdeteksi’ bernilai 0 berarti tidak ada wajah terdeteksi, jika bernilai 1 berarti ada 1 wajah terdeteksi, dst
terima kasih Pak, berhasil..
btw kapan nih pak bikin tutorial mengenali kedipan mata hehe
alhamd. Insya Allah nanti kalo ada waktu senggang ya 🙂
Traceback (most recent call last):
File “C:/Users/User/pelacak/facedetection.py”, line 1, in
import cv2
ImportError: No module named cv2
>>>
kalau seperti ini kenapa ya kak
library opencv belum terinstal atau sudah terinstal tapi path nya belum sesuai
Izin bertanya Pak, di tempat saya kok begini kenapa ya?
Traceback (most recent call last):
File “C:\Users\ASUS\Documents\OpenCV-Face-Recognition-master\FacialRecognition\facedetection.py”, line 10, in
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
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’
running di windows error bgni , bisa dibantu ?
hallo pak saya memiliki beberapa masalah saat menggunakan IDLE saat saya Run module dengan F5 malah muncul pesan seperti ini.
================== RESTART: E:\Documents\Python\faceReconig.py =================
Traceback (most recent call last):
File “E:\Documents\Python\faceReconig.py”, line 1, in
import cv2
ModuleNotFoundError: No module named ‘cv2’
padahal saya sudah melakukan installasi open cv dengan pip di vscode mohon bantuannya pak karena saya sangat tertarik dengan tutorial bapa ini. Terima kasih atas perhatiannya salam
coba cek cv2 nya sudah benar terinsatal atau belum
import cv2
cv2.__version__