Face Detection with OpenCV

  • ​In OpenCV, Face detection is the commonly used feature.

  • Face detection is very useful in biometrics, face recognition, and surveillance.

  • In simple words it is the process of locating faces in an image or video and extracting their features.

  • We can detect faces using a pre-trained cascade classifier that is based on the Haar-like features algorithm.

In this tutorial, we’ll learn about detecting faces in images using OpenCV.

What is cv2.CascadeClassifier in OpenCV?

  • cv2.CascadeClassifier is a library in OpenCV used for object detection.

  • It uses the Haar feature-based cascade classifier algorithm.

  • It is a powerful feature in computer vision and has many applications, including face detection, object recognition, and biometrics.



import cv2

facecascade = cv2.CascadeClassifier( + 'haarcascade_frontalface_default.xml')
image = cv2.imread('cricket2.jpg')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

faces = facecascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=2, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)

for (x, y, w, h) in faces:
    img = cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow('Detected Faces', image)
  • First we imported cv2 and used cv2.imread function to read the image.

  • The second line loads the pre-trained face detection classifier from the Haar Cascade file 'haarcascade_frontalface_default.xml' located in the OpenCV data folder.

  • Then, we used cv2.imread() function to read the image and cv2.cvtColor() to convert input image into grayscale.

  • facecascade.detectMultiScale() detects the faces in the grayscale image using the pre-trained face detection classifier loaded earlier. It takes parameters like - image path, scale factor(it specifies how much the image size is reduced at each image scale), minNeighbour, minSize(minimum size of detected objects), and flag.

  • Then, we used a for loop to draw a rectangle around the detected faces.

  • At last, we used imshow() function to display the final result.


For better results, you can use a different pre-trained face detection classifier according to the image.