Face Recognition OpenCV Source Code
In this article, you will learn a very simple face recognition program in Python OpenCV. We will explain all the process step by step that will help you to implement it easily.
There is variety of computer applications that identify human faces in digital images, like - security system, 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 operation for image processing.
Module & XML Required
For the face detection program, we need the following modules and XML file -
- Virtual Environment
- OpenCV Module
Install and Activate VirtualEnv
Before installing OpenCV, we recommend installing the virtual environment (virtualenv). It provides a new virtual environment for your project and creates your own directory. If you have already installed it, skip this part.
Activate Virtual Environment
You have seen a new folder named 'env', is created in the 'projects' directory. The subfolder 'Scripts' contains the activation file. The OpenCV project needs to activate the virtual environment first. Here is the way to activate this -
c:\Python38\Scripts\projects>cd env/Scripts c:\Python38\Scripts\projects\env\Scripts>activate (env) c:\Python38\Scripts\projects\env\Scripts>
The above command modifies the shell prompt and indicates which virtual environment is currently active.
Install OpenCV in Python
OpenCV stands for Open Source Computer Vision Library. It is a free, open source library which is used for computer vision. It provides good support in Machine Learning, Face Recognition, Deep Learning, etc.
The given command installs the OpenCV module with pip tool.
pip install opencv-contrib-python
The following code import the OpenCV module -
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)
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 ArticlesOpenCV color detection
Python 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