Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Opencv Python program for Face Detection

  • Difficulty Level : Medium
  • Last Updated : 17 Jun, 2017

The objective of the program given is to detect object of interest(face) in real time and to keep tracking of the same object.This is a simple example of how to detect face in Python. You can try to use training samples of any other object of your choice to be detected by training the classifier on required objects.

Here is the steps to download the requirements below.

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course


  1. Download Python 2.7.x version, numpy and Opencv 2.7.x version.Check if your Windows either 32 bit or 64 bit is compatible and install accordingly.
  2. Make sure that numpy is running in your python then try to install opencv.
  3. Put the haarcascade_eye.xml & haarcascade_frontalface_default.xml files in the same folder(links given in below code).


# OpenCV program to detect face in real time
# import libraries of python OpenCV 
# where its functionality resides
import cv2 
# load the required trained XML classifiers
# data/haarcascades/haarcascade_frontalface_default.xml
# Trained XML classifiers describes some features of some
# object we want to detect a cascade function is trained
# from a lot of positive(faces) and negative(non-faces)
# images.
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# /data/haarcascades/haarcascade_eye.xml
# Trained XML file for detecting eyes
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml'
# capture frames from a camera
cap = cv2.VideoCapture(0)
# loop runs if capturing has been initialized.
while 1
    # reads frames from a camera
    ret, img = 
    # convert to gray scale of each frames
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Detects faces of different sizes in the input image
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        # To draw a rectangle in a face 
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]
        # Detects eyes of different sizes in the input image
        eyes = eye_cascade.detectMultiScale(roi_gray) 
        #To draw a rectangle in eyes
        for (ex,ey,ew,eh) in eyes:
    # Display an image in a window
    # Wait for Esc key to stop
    k = cv2.waitKey(30) & 0xff
    if k == 27:
# Close the window
# De-allocate any associated memory usage



Next Article:
Opencv C++ Program for face detection


This article is contributed by Afzal Ansari. If you like GeeksforGeeks and would like to contribute, you can also write an article using or mail your article to See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!