#!/usr/bin/python


import subprocess
from face import *
#from movimento import *
from seriale import *
#import window
from serverThread.py import *


#----------
# M A I N
#----------

#avviamo il thread che in autonomia gestisce il server che si mette in ascolto di input
server = startThread(None)


capture = cv.CaptureFromCAM(0)
faceCascade = cv.Load("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml")

distHold = 0

while (cv.WaitKey(15)==-1):
    img = cv.QueryFrame(capture)
    face = DetectFace(img, faceCascade)
    
    if face:
		print "ciao!"
		
		#il vettore face in quarta posizione (indice 3) contiene il 
		#la lunghezza della diagonale
		dist = face[3]
		#print dist
		
		print face[2]

		#il servo motore dell'assex 
#		rotazione = gira(face[2])
#		print rotazione
		
		#inviamo alla porta seriale le coordinate del punto medio
		invia(str(face[2]))
		
		if (dist < distHold - 9):
			print "stai andando via!"
		
		distHold = dist
		
		if(server.getValue()):
		
			invia(str(askThread(server)))
		
server.stop()
cv.ReleaseCapture(capture)

@@ -12,17 +12,16 @@
 python%0A%0A
-%0A
 import s
@@ -146,161 +146,733 @@
  *%0A%0A
-%0A#----------%0A# M A I N%0A#----------%0A%0A#avviamo il thread che in autonomia gestisce il server che si mette in ascolto di input%0Aserver = startThread(None)%0A%0A%0A
+#libreria picamera e picamera.array servono a acquisire dalla webcam un formato array di tipo nunpy per essere trattato da openCV %0Afrom picamera.array import PiRGBArray%0Afrom picamera import PiCamera%0A%0A#----------%0A# M A I N%0A#----------%0A%0A#inizializzo una variabile per scegliere il tipo di acquisizione, se attiva la piCamera deve essere su %22True%22%0ApiCam = True%0A%0A#avviamo il thread che in autonomia ascolta possibili input esterni. i client di test sono nella cartella /client%0Aserver = startThread(None)%0A%0Aif piCam:%0A%09camera = PiCamera()%0A%09rawCapture = PiRGBArray(camera)%0A %0A%09# allow the camera to warmup%0A%09time.sleep(0.1)%0A %0A# grab an image from the camera%0A%09camera.capture(rawCapture, format=%22bgr%22)%0A%09capture = rawCapture.array%0Aelse:%0A%09
 capt
@@ -898,16 +898,18 @@
 mCAM(0)%0A
+%09%0A
 faceCasc
@@ -993,22 +993,8 @@
 %22)%0A%0A
-distHold = 0%0A%0A
 whil
@@ -1134,232 +1134,81 @@
 %0A%09%09#
-il vettore face in quarta posizione (indice 3) contiene il %0A%09%09#la lunghezza della diagonale%0A%09%09dist = face%5B3%5D%0A%09%09#print dist%0A%09%09%0A%09%09print face%5B2%5D%0A%0A%09%09#il servo motore dell'assex %0A#%09%09rotazione = gira(face%5B2%5D)%0A#%09%09print rotazione%0A%09%09
+stampa a monitor le coordinate del punto medio del volto%0A%09%09print face%5B2%5D%0A
 %0A%09%09#
@@ -1233,16 +1233,36 @@
  seriale
+, quindi ad arduino,
  le coor
@@ -1315,86 +1315,71 @@
 %09%0A%09%09
-if (dist %3C distHold - 9):%0A%09%09%09print %22stai andando via!%22%0A%09%09%0A%09%09distHold = dist%0A%09%09
+#controlla il thread del server se ha ricevuto un input esterno
 %0A%09%09i
@@ -1436,18 +1436,45 @@
 rver)))%0A
-%09%09
+%0A#chiude il server in ascolto
 %0Aserver.

Update leo.py