Face Recognition OpenCV Source Code
In this article, you will learn a very simple face recognition program in Python using the OpenCV. We will explain all the process step by step that will help you to implement it easily.
There are a variety of computer applications that identify human faces in digital images, like- security systems, criminal identification, healthcare, and so on. The face-detection algorithms focus on the detection of frontal human faces. The Python OpenCV library functions are mainly aimed at real-time computer vision. It is mainly used to do all the operations for image processing.
Module & XML Required
For the face detection program, we need the following modules and XML file-
- OpenCV Module
- haarcascade_frontalface_default.xml
Install OpenCV in Python
OpenCV stands for Open Source Computer Vision Library. It is a free and open-source library that is used for computer vision. It provides good support for machine learning, face recognition, deep learning, etc.
The given command installs the OpenCV module with the pip tool.
pip install opencv-contrib-python
The following code import the OpenCV module-
import cv2
Download haarcascade_frontalface_default.xml
We can download the haarcascade_frontalface_default.xml from the GitHub repository. Once downloaded, save this file in your working directory. The haarcascade_frontalface_default.xml is a haar cascade designed by OpenCV to detect the frontal face in an image or video.
Face Detection Code Explanation
First, we will load the image using OpenCV imread() function.
img = cv2.imread('baby.jpg')
Next, we will convert the imported image in grayscale. The cvtColor() method is used to convert an image from one color-space to another. It specifies the type of conversion, i.e., cv2.COLOR_BGR2GRAY in the second parameter.
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
In the following code, the function cv2.CascadeClassifier() loads the necessary XML file. The Haar Cascade Model is a machine learning object detection algorithm used to identify objects in an image.
haar_cascade_face = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
The face detection is performed by detectMultiScale() function. It returns boundary rectangles for the detected faces. In this method, we have passed three parameters. The img_gray is the grayscale input image, scaleFactor specifies how much the image size is reduced at each image scale, and minNeighbors specifies how many neighbors each candidate rectangle should have to retain it.
faces_rects = haar_cascade_face.detectMultiScale(img_gray,
scaleFactor = 1.2,
minNeighbors = 5);
In the above code, we got the face boundary rectangle. Next, we will draw a rectangle on the detected boundary using cv2.rectangle() method.
for (x,y,w,h) in faces_rects:
img = cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
Complete Code: Face detection OpenCV Python code
Here, we have merged all the above code to get the complete code for face detection and print on the screen.
import cv2
# loading the source image
img = cv2.imread('baby.jpg')
# converting to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
haar_cascade_face = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces_rects = haar_cascade_face.detectMultiScale(img_gray,
scaleFactor = 1.2,
minNeighbors = 5);
# getting no. of faces detected
print('Faces Detected : ', len(faces_rects))
for (x,y,w,h) in faces_rects:
img = cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('image', img)
cv2.waitKey(0);
cv2.destroyAllWindows();
cv2.waitKey(1)
When you run the above code in the console, it returns the following output and displays the image -
(env) c:\python37\Scripts\projects>face_detection.py
Faces Detected : 1
We can also use the same code to detect multiple faces, like as shown below -
Related Articles
OpenCV color detectionPython multiline string
glob in Python
Python heap implementation
zip function in Python
Remove last element from list Python
Check if list is empty Python
Python OpenCV Histogram Equalization
Python OpenCV Histogram of Color Image
Python OpenCV Histogram of Grayscale Image
Python OpenCV Image Filtering
Python OpenCV ColorMap
Python OpenCV Gaussian Blur Filtering
Python OpenCV Overview and Examples
Draw different shapes on image using Python OpenCV
How to convert MySQL query result to JSON in Python
How to display data from MongoDB in HTML table using Python
CRUD operations in Python using MongoDB connector
Write Python Pandas Dataframe to CSV