from VideoCapture import Device import ImageDraw import Image import sys import pygame def diff_image(img1, img2): """ Compare 2 images to detect possible motion """ if not img1 or not img2: return False #split the image into individual bands source = img2.split() img2 = img2.getdata() pixel_count = len(img2) R, G, B = 0, 1, 2 reddata = source[R].getdata() greendata = source[G].getdata() bluedata = source[B].getdata() redcount = 0 for i in range(pixel_count): red = reddata[i] green = greendata[i] blue = bluedata[i] # process bands factor = 1.5 if (green*factor) <= red >= (blue*factor): redcount = redcount + 1 if redcount > 600: #red detected return True # init pygame pygame.init() # setup screen size size = width, height = 320,240 # get cam device cam = Device() screen = pygame.display.set_mode(size) left_button = None right_button = None middle_button = None left_button2 = None right_button2 = None middle_button2 = None left_button3 = None right_button3 = None middle_button3 = None while 1: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() camshot = cam.getImage() # process top left button new_left_button = camshot.crop((0,0,100,80)) draw = ImageDraw.Draw(camshot) if diff_image(left_button, new_left_button): draw.rectangle((0,0,100,80), fill=128) else: draw.rectangle((0,0,100,80), outline=128) left_button = new_left_button # process top right button new_right_button = camshot.crop((220,0,320,80)) draw = ImageDraw.Draw(camshot) if diff_image(right_button, new_right_button): draw.rectangle((220,0,320,80), fill=128) else: draw.rectangle((220,0,320,80), outline=128) right_button = new_right_button # process top middle button new_middle_button = camshot.crop((100,0,220,80)) draw = ImageDraw.Draw(camshot) if diff_image(middle_button, new_middle_button): draw.rectangle((100,0,220,80), fill=128) else: draw.rectangle((100,0,220,80), outline=128) middle_button = new_middle_button #-------------------------------------------------------- # process top left button2 new_left_button2 = camshot.crop((0,80,100,160)) draw = ImageDraw.Draw(camshot) if diff_image(left_button2, new_left_button2): draw.rectangle((0,80,100,160), fill=128) else: draw.rectangle((0,80,100,160), outline=128) left_button2 = new_left_button2 # process top right button2 new_right_button2 = camshot.crop((220,80,320,160)) draw = ImageDraw.Draw(camshot) if diff_image(right_button2, new_right_button2): draw.rectangle((220,80,320,160), fill=128) else: draw.rectangle((220,80,320,160), outline=128) right_button2 = new_right_button2 # process top middle button new_middle_button2 = camshot.crop((100,80,220,160)) draw = ImageDraw.Draw(camshot) if diff_image(middle_button2, new_middle_button2): draw.rectangle((100,80,220,160), fill=128) else: draw.rectangle((100,80,220,160), outline=128) middle_button2 = new_middle_button2 #---------------------------------------------------------- # process top left button2 new_left_button3 = camshot.crop((0,160,100,240)) draw = ImageDraw.Draw(camshot) if diff_image(left_button3, new_left_button3): draw.rectangle((0,160,100,240), fill=128) else: draw.rectangle((0,160,100,240), outline=128) left_button3 = new_left_button3 # process top right button2 new_right_button3 = camshot.crop((220,160,320,240)) draw = ImageDraw.Draw(camshot) if diff_image(right_button3, new_right_button3): draw.rectangle((220,160,320,240), fill=128) else: draw.rectangle((220,160,320,240), outline=128) right_button3 = new_right_button3 # process top middle button new_middle_button3 = camshot.crop((100,160,220,240)) draw = ImageDraw.Draw(camshot) if diff_image(middle_button3, new_middle_button3): draw.rectangle((100,160,220,240), fill=128) else: draw.rectangle((100,160,220,240), outline=128) middle_button3 = new_middle_button3 camshot = pygame.image.fromstring(camshot.tostring(), (320,240), "RGB") screen.blit(camshot, (0,0)) pygame.display.flip()