Introduction: 6.2.Face Detection

Picture of 6.2.Face Detection

OpenCV is the most popular library for computer vision. It has C++, C, Python and Java interfaces and supports Windows, Linux, Mac OS, iOS and Android.

OpenCV uses machine learning algorithms to search for faces within a picture, and break the task of identifying the face into thousands of smaller, bite-sized tasks. These tasks are called classifiers.

OpenCV uses cascades to implement face detection. Though the theory seems complicated, in practice it is very easy to use.

Thanks to Shantnu Tiwari who give us an example that just has several lines of python code to implement face detection using a webcam.

This post , I follow his steps to do face detection on pcDuino8 Uno.



pcDuino8 UnoUSB UVC camera


Ubuntu 14.04Python 2.7.6OpenCV 2.4.11

Download the source code

$ git clone
$ python haarcascade_frontalface_default.xml

Step 1:

Picture of

Note: Make sure the webcam is recognized as /dev/video0
I use my mobile phone to show a picture with many faces, the detection result is not bad, although it shows that there are six faces, only five faces are true. Please check the following picture.

Step 2: Understand the Source Code

I add some comments in the source code to help understanding the source code.

If you have interesting to try this demo, you can the reference.

import cv2
import sys cascPath = sys.argv[1] faceCascade = cv2.CascadeClassifier(cascPath) # set the video source to webcam which is /dev/video0 video_capture = cv2.VideoCapture(0) while True: # Capture frame-by-frame ret, frame = # Convert color to gray, because face detection don't need color gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #Do face detection faces = faceCascade.detectMultiScale( gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), ) # Draw a rectangle around the faces for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) # Display the resulting frame with rectangle cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything is done, release the capture video_capture.release() cv2.destroyAllWindows()

Step 3:


About This Instructable




Bio: Let's play together! All about pcDuino,Arduino,Raspberry pi and technology. My facebook :Sherry Wu
More by shansa wu:How to Use App to Control Your LED StripPano 360 Virtual Reality Photo Shot With PcDuino8 UnoTutorial of Using E-paper Shield on Arduino
Add instructable to: