Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OpenCV - Face detection

  • CascadeClassifier

  • detectMultiScale

  • Using a pretrained classifier provided by OpenCV

  • Haarcascade

  • Local binary pattern

  • get the haarcascade_frontalface_default.xml XML file from [GitHub]) and save it locally

import cv2 as cv
import sys

if len(sys.argv) != 2:
    exit(f"Usage: {sys.argv[0]} FILENAME")

filename = sys.argv[1]

original = cv.imread(filename)
print(original.shape)
cv.imshow('Original', original)

gray = cv.cvtColor(original, cv.COLOR_BGR2GRAY)
cv.imshow('Grey', gray)

haar_classifier = cv.CascadeClassifier('haarcascade_frontalface_default.xml')

faces_rect = haar_classifier.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3)
# print(faces_rect)
print(f"Number of faces: {len(faces_rect)}")

faces = original.copy()
for (x, y, width, height) in faces_rect:
    cv.rectangle(faces, (x, y), (x+width, y+height), color=(0, 0, 255), thickness=2)
cv.imshow('Faces', faces)

cv.waitKey(0)