Un pequeño ejemplo en python de como usar OpenCV y Festival TTS para detectar caras en la RaspiCam y avisar por voz de ello
import numpy as np import cv2 import time import os #cargamos la plantilla e inicializamos la webcam: print "loading classifier..." face_cascade = cv2.CascadeClassifier('haarcascade_frontalface.xml') print "configurando camara" cap = cv2.VideoCapture(0) cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH ,640) cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT ,480) minS=250 while(True): start = time.clock() #leemos un frame y lo guardamos ret, img = cap.read() #convertimos la imagen a blanco y negro gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #gray = cv2.equalizeHist(gray) #buscamos las coordenadas de los rostros (si los hay) y #guardamos su posicion faces = face_cascade.detectMultiScale(gray, 1.1, 2, minSize=(minS, minS), flags=cv2.cv.CV_HAAR_SCALE_IMAGE) if len(faces)>0: os.system("echo \"Careto detectao\" | festival --tts") print "Careto detectao" #Dibujamos un rectangulo en las coordenadas de cada rostro i=1 for (x,y,w,h) in faces: #print x,y,w,h x=x-int(w*0.1) y=y-int(h*0.1) w=int(w*1.2) h=int(h*1.2) cv2.rectangle(gray,(x,y),(x+w,y+h),(255,0,0),2) i=i+1 #Mostramos la imagen #cv2.imshow('img2',gray) #con la tecla 'q' salimos del programa tecla = cv2.waitKey(1) & 0xFF if tecla == ord('q'): break elif tecla == ord('s'): cv2.imwrite("caras/"+str(nimagen)+".png",gray); print "guardada" nimagen=nimagen+1 end = time.clock() print 1/(end-start)," fps ", len(faces), " caras" cap.release() cv2.destroyAllWindows()