import cv2 import sys import serial import time face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # Create an object Serial with ttymxc3 port ser = serial.Serial( port='COM6', baudrate=9600, parity=serial.PARITY_ODD, # Optional stopbits=serial.STOPBITS_ONE, # Optional bytesize=serial.EIGHTBITS # Optional ) # Check if Serial is Open, close it then re-open (to avoid exception) #if ser.isOpen(): #ser.close() #ser.open() cap = cv2.VideoCapture(1) font = cv2.FONT_HERSHEY_SIMPLEX wait = ser.inWaiting() while True: # Capture frame-by-frame try: et, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #faces = face_cascade.detectMultiScale(gray, 1.2, 5) faces = face_cascade.detectMultiScale( gray, scaleFactor=1.2, minNeighbors=5, minSize=(30, 30), #flags=cv2.cv.CV_HAAR_SCALE_IMAGE ) except Exception, d: print d print "no camera!" cap.release() cv2.destroyAllWindows() ser.close() break # Draw a rectangle around the faces try: for (x, y, w, h) in faces: print ("x: ",x,", y: ",y) prov=str(x+w/2) prov = prov + 'x' ser.write(prov) prov=str(y+h/2) prov = prov + 'x' ser.write(prov) time.sleep(0.015) cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) # Display the resulting frame cv2.imshow('Video', frame) except Exception, e: print e print "oops" cap.release() cv2.destroyAllWindows() ser.close() break if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything is done, release the capture cap.release() cv2.destroyAllWindows() ser.close()