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 dan sebagainya. 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.
Kita mungkin pernah upload foto di situs jejaring sosial Facebook, terus wajah ditandai dan dikenali otomatis dengan akurasi yang sangat tinggi. Wajah tersebut dideteksi menggunakan teknologi Face Recognition/Face Detection.
Kali ini kita akan coba buat aplikasi sederhana deteksi wajah dengan Python. Deteksi wajah atau obyek merupakan teknologi sangat utama dalam membangun aplikasi cerdas Machine Learning atau Computational Intelligence.
Untuk melakukan deteksi objek, kita harus menggunakan library yang sudah ada yaitu OpenCV (Open Source Computer Vision Library). Jadi pastikan modul ini sudah ter-install sebelumnya pada Python. Jika belum, kita akan bahas cara install modul/library yang diperlukan.
Pengertian OpenCV dan Python
Tutorial kita kali ini adalah mencoba memproses gambar yang ditangkap kamera untuk kita deteksi jika ada wajah manusia di dalamnya.
OpenCV 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.
Disini kita menggunakan Python karena 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 kita men-simplify program kita. Selain alasan tersebut dengan menggunakan Python, banyak tutorialnya di internet, jadi kalau ada kesulitan tinggal browsing saja.
Langkah instalasi dan Script Deteksi Wajah OpenCV – Python
Dalam tutorial ini saya menggunakan :
- OS Windows 10 (64 bit)+ built-in camera
- Python 3.11.1 (64 bit)
- Library OpenCV 3.0
Berikut langkah-langkah pembuatannya :
- Untuk persiapan silahkan download dulu Python-nya di sini (download versi terbaru). Jangan lupa mencentang “Add Puthon 3.x to Path” saat instalasinya. Untuk lebih detailnya bisa baca pada tutorial berikut ini https://agussuratna.net/2023/01/07/tutorial-python-pengenalan-bahasa-python/.
- Jika sudah berhasil instal Python, langkah selanjutnya adalah install library opencv. Silahkan buka command prompt dan ketikkan perintah seperti berikut (pastikan ada koneksi internet) :
pip install opencv-python
Catatan:
Jika sewaktu proses instalasi Python kita mencentang option Add Python 3.x to Path, maka kita bisa mengetikkan perintah di atas di sembarang path di command prompt.
Jika perintah di atas gagal dieksekusi, ada kemungkinan package installer ‘pip‘ belum terinstal di laptop kita. - Jika semua sudah terintal dengan baik, buat project baru misal dengan nama facedetection
- Buat file baru, misalnya dengan nama deteksi_wajah.py dan buat sintak seperti berikut :
import cv2 face_cascade = cv2.CascadeClassifier('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 sintak :
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. Kita bisa mengunduh file tersebut di sini. Letakkan file xml tersebut satu folder dengan program python kita (deteksi_wajah.py)
Baris 5 : mendefinisikan instance object untuk kamera. Parameter 0 dalam sintaks cap=cv2.VideoCapture(0) digunakan untuk menentukan nomor urut perangkat kamera yang akan digunakan dalam operasi capture video. Dalam hal ini, nilai0
menandakan bahwa program akan menggunakan kamera default yang tersedia di sistem. Jika terdapat lebih dari satu perangkat kamera yang terhubung ke sistem, kita dapat menggunakan nomor urut perangkat kamera untuk menentukan kamera mana yang akan digunakan. Misalnya, jika kita ingin menggunakan kamera kedua yang terhubung ke sistem, kita dapat mengganti nilai parameter menjadi 1.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 17 : menampilkan window
Baris 19-21 : mendeteksi penekanan tombol ESP untuk keluar program
Baris 23-24 : destroy object kamera dan menutup windows
Tampilan Program Deteksi Wajah OpenCV Python
Running file tersebut melalui menu Run->Run Module atau dengan menekan tombol Shift+F10. Sesaat kemudian kamera di laptop kita akan aktif dan menampilkan gambar tangkapannya. Jika wajah kita ada di sana maka akan ada kotak biru yang akan mengikuti kemanapun wajah kita bergerak.
Kita sudah berhasil mendeteksi wajah menggunakan OpenCV dan Python. Untuk keluar program, kita bisa menekan tombol ESC. Tutorial berikutnya akan kita coba bahas bagaimana mengenali wajah sesuai nama orang tersebut (face recognition), tidak hanya mendeteksi saja (face detection).
Referensi:
- Aplikasi Face Detector dan Digital Imaging dengan Python (Jubile Enterprise)
- https://www.scivision.co/install-opencv-python-windows/