This is old tutorial make long time ago by me to detect faces on photos.
If you know more about OpenCV module , then is easy to understand source code.
First I load the modules:
import opencv.cv as cv
import opencv.highgui as gui
import opencv
Next I set the variables and data blocks processed some particular features of the modules loaded.
hc = cv.cvLoad("haarcascade_frontalface_default.xml")
img = gui.cvLoadImage("me.jpg",cv.CV_BGR2RGB)
storage = cv.cvCreateMemStorage(0)
cascade = cv.cvLoadHaarClassifierCascade('haarcascade_frontalface_alt.xml',cv.cvSize(1, 1))
grayscale = cv.cvCreateImage(cv.cvSize(img.width, img.height), 8, 1)
cv.cvCvtColor(img, grayscale, cv.CV_BGR2GRAY)
This is part where is detect faces and save the output like a jpeg image.
faces = cv.cvHaarDetectObjects(grayscale, cascade,\
storage,1.2,2,cv.CV_HAAR_DO_CANNY_PRUNING, cv.cvSize(5, 5))
if faces:
for i in faces:
cv.cvRectangle(img, cv.cvPoint( int(i.x), int(i.y)),cv.cvPoint(int(i.x + i.width), int(i.y + i.height)),cv.CV_RGB(0, 255, 0), 3, 8, 0)
gui.cvSaveImage("faces_detected.jpg", img)
The haarcascade_frontalface_default.xml file it's from internet, but you can create one if you want.
Maybe in the next tutorial I will show how.
Let's see the result. The input image file is:

... and the result is:
