Python Face Detection dan Eyes Detection Menggunakan OpenCV

May 27, 2018
Kamu dapat membuat program untuk mendeteksi wajah dan mata secara realtime menggunakan Python + OpenCV + Haar Feature-based Cascade Classifiers.

OpenCV sebenarnya telah dilengkapi dengan trainer dan detector, jika kamu ingin men-training Classifier-mu sendiri seperti mendeteksi sepeda, motor, mobil dll kamu dapat menggunakan OpenCV untuk membuatnya.

OpenCV sudah berisi banyak classifier yang sudah dilatih sebelumnya (pre-trained) untuk wajah, mata, senyuman, dll. Bisanya file tersebut berbentuk XML yang tersimpan pada folder opencv/data/haarcascades/. Dengan memanfaatkan pre-trained classifiers XML mari kita membuat facial recognition.

1. Download pre-trained classifiers XML Haarcascade_frontalface_default.xml & Haarcascade_eye.xml

File pre-trained classifiers XML ini digunakan untuk mencocokkan gambar wajah yang ditangkap oleh kamera dengan kumpulan data wajah.

Download Haarcascade_frontfalface_default.xml
Download Haarcascade_eye.xml


2. Install OpenCV menggunakan pip

OpenCV digunakan untuk menangkap gambar melalui kamera dan mengolah data classifier. Buka aplikasi command prompt atau PowerShell kemudian ketik perintah dbawah ini.

pip install opencv-python


3. Coding Facial Recognition & Eyes Recognition menggunakan Python

Dokumentasi resmi face detection & eye detection dapat dilihat melaui link ini. Letakkan kedua file XML yang telah didownload pada step 1 kemudian buat file python dengan code seperti dibawah ini simpan dengan nama facial_eye_detection_image.py

Program ini mendeteksi foto bernama obama.jpg silahkan gunakan foto yang kamu inginkan untuk dideteksi.

Jalankan script tersebut menggunakan perintah python facial_eye_detection_image.py
import cv2 as cv
face_cascade = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv.CascadeClassifier('haarcascade_eye.xml')
img = cv.imread('obama.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    cv.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]
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex,ey,ew,eh) in eyes:
        cv.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
cv.imshow('img',img)
cv.waitKey(0)
cv.destroyAllWindows()

Hasilnya
Python OpenCV face & eye detection from image



Untuk mendeteksi wajah dan mata secara real-time menggunakan webcam silahkan ikuti code dibawah ini

import cv2
import sys

faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
video_capture = cv2.VideoCapture(0)

while True:

 # Capture frame-by-frame
 retval, frame = video_capture.read()

 # Convert to grayscale
 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

 # Detect features specified in Haar Cascade
 faces = faceCascade.detectMultiScale(
  gray,
  scaleFactor=1.1,
  minNeighbors=5,
  minSize=(35, 35)
 )

 # Draw a rectangle around recognized faces 
 for (x, y, w, h) in faces:
  cv2.rectangle(frame, (x, y), (x+w, y+h), (50, 50, 200), 2)
  
  # Detect features specified in Haar Cascade
  roi_gray = gray[y:y+h, x:x+w]
  roi_color = frame[y:y+h, x:x+w]
  eyes = eye_cascade.detectMultiScale(roi_gray)
  for (ex,ey,ew,eh) in eyes:
   cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

 # Display the resulting frame
 cv2.imshow('Video', frame)

 # Exit the camera view
 if cv2.waitKey(1) & 0xFF == ord('q'):
  sys.exit() 

Hasilnya
Python face & eye detection using webcam


1 comment:

Powered by Blogger.