#!/usr/bin/python
import time, cProfile
import pygame
import pygame.camera
from pygame.locals import *

pygame.init()

class VideoCapturePlayer(object):
   size = ( 640, 480 )
   def __init__(self, **argd):
       self.__dict__.update(**argd)
       super(VideoCapturePlayer, self).__init__(**argd)
       self.display = pygame.display.set_mode( self.size )
       self.camera = X=pygame.camera.Camera("/dev/video0", self.size, "HSV")
       self.camera.start()
       self.clock = pygame.time.Clock()

       self.snapshot = None
      

   def get_and_flip(self):
       if self.snapshot:
           snapshot = self.camera.get_image(self.snapshot)
       else:
           self.snapshot = self.camera.get_image()
           snapshot = self.snapshot

       a = pygame.surface.Surface((640, 480),0,24)
       pygame.transform.threshold(a, snapshot, (90, 128, 128), (30, 128, 128), (255, 255, 255), True)
       a.unlock()   
       a.set_colorkey((255, 255, 255))
       mask = pygame.mask.from_surface(a)
       cent = mask.centroid()
#       rects = mask.get_bounding_rects()
       a.unlock() 
       snapshot.unlock()
       self.display.blit(snapshot, (0,0))
       pygame.draw.circle(self.display, (255, 0, 0), cent[0], 10, 0)
       pygame.display.flip()

   def main(self):
       going = True
       self.get_and_flip()
       while going:
           events = pygame.event.get()
           for e in events:
               if e.type == QUIT or (e.type == KEYDOWN and e.key == K_ESCAPE):
                   going = False

           self.get_and_flip()
           self.clock.tick(30)
#           print self.clock.get_fps()

VideoCapturePlayer().main()
