Opencv


Gracias a las ventajas de la librería Opencv (Open Computer Vision), se pueden tener varias alternativas para el manejo de imágenes digitalizadas ya sea mediante webcam o simplemente el manejo de imágenes estáticas.
El siguiente código maneja el reconocimiento de rostros, lo interesante es que si la persona deja de ver a la cámara web el protector de pantalla se ejecutará, y bloqueará la pantalla de nuestras portátiles, y cuando regresamos o la camara a detectado un rostro el protector de pantallas se desactiva.

#!/usr/bin/python

import sys
import os
import cv

scale = 2
camara = cv.CreateCameraCapture(0)

cascade = sys.argv[1]
storage = cv.CreateMemStorage(0)
cascade = cv.Load(cascade)

paramTime = 10
paramClave = "false"

if len(sys.argv) >= 3: paramTime = int(sys.argv[2])
if len(sys.argv) == 4: paramClave = sys.argv[3]

scale = 2
notPresent = 0
while True:
	img = cv.QueryFrame(camara)
	faces = cv.HaarDetectObjects(
                             img,
                             cascade,
                             storage,
                             scale,
                             2,
                             cv.CV_HAAR_DO_CANNY_PRUNING)
	if faces:
		if (notPresent !=0) :
			 os.system("gnome-screensaver-command --deactivate")

		notPresent = 0
		for ((x,y,w,h),n) in  faces:
			cv.Rectangle(img,
				( int(x), int(y)),
				(int(x + w), int(y + h)),
				cv.CV_RGB(255,0,0), 3, 8, 0)
			cv.ShowImage("Foto", img)
	else:
		notPresent += 1
		if notPresent >= paramTime:
			os.system("gnome-screensaver-command --activate")

	if cv.WaitKey(10)> 0:
		break

descarga código, y haarcascade

para ejecutar el programa necesitamos descargar los dos archivos anteriores, y en consola damos

"python SSA.py haarcascade_frontalface_alt2.xml"