Home »
Python
Face and Eye Detection in Python using OpenCV
In this tutorial, we will learn the concept of face and eye detection using Python and OpenCV.
Submitted by Abhinav Gangrade, on July 16, 2020
Modules Used:
python-opencv(cv2)
python-opencv(cv2)
Opencv(Open source computer vision) is a python library that will help us to solve computer vision problems.
Download python-opencv(cv2)
- General Way: pip install python-opencv
- Pycharm users: Pycharm users can download this module from the project interpreter.
Here, we will detect the face and eyes of the individual. For this, we use the webcam of our system and the XML files to detect the face and eyes. We will detect the face in the frame and after that eyes are in the face so we will enter into the coordinates of the face and will detect the eyes and draw the rectangle on the face and eye detected.
Functions related the face and eye detection
- cv2.CascadeClassifier("<xml file for detection>"): This function is for getting the face and eyes extracts, how we will detect them.
- cv2.Videocapture(): This is for the Videocapturing through the webcam of our system.
- <face or eye extract>.detectmultiscale(<Gray_scale image>,1.3,5): To detect the the face or eyes in the frame.
- cv2.rectangle(<frame on which we want the rectangle>,(<starting position>,<ending position>,(<color>),thickness=<thickness of the border>)
Note: The detection of the face and eyes will be in grayscale mode.
The link to the XML files for the face and eye detection is :
Python code to detect face and eyes
# import the modules
import cv2
# now we have the haarcascades files
# to detect the face and eyes to detect the face
faces=cv2.CascadeClassifier("face.xml")
# to detect the eyes
eyes=cv2.CascadeClassifier("eye.xml")
# capture the frame through webcam
capture=cv2.VideoCapture(0)
# now running the loop for the webcam
while True:
# reading the webcam
ret,frame=capture.read()
# now the face is in the frame
# the detection is done with the gray scale frame
gray_frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
face=faces.detectMultiScale(gray_frame,1.3,5)
# now getting into the face and its position
for (x,y,w,h) in face:
# drawing the rectangle on the face
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),thickness=4)
# now the eyes are on the face
# so we have to make the face frame gray
gray_face=gray_frame[y:y+h,x:x+w]
# make the color face also
color_face=frame[y:y+h,x:x+w]
# check the eyes on this face
eye=eyes.detectMultiScale(gray_face,1.3,5)
# get into the eyes with its position
for (a,b,c,d) in eye:
# we have to draw the rectangle on the
# coloured face
cv2.rectangle(color_face,(a,b),(a+c,b+d),(0,255,0),thickness=4)
# show the frame
cv2.imshow("Abhinav's Frame",frame)
if cv2.waitKey(1)==13:
break
# after ending the loop release the frame
capture.release()
cv2.destroyAllWindows()
Output: