from VideoCapture import Device import ImageDraw import sys import pygame def diff_image(img1, img2, pix_threshold=50, img_threshold=10): """ Compare 2 images to detect possible motion """ if not img1 or not img2: return False img1 = img1.getdata() img2 = img2.getdata() pixel_count = len(img1) pixdiff = 0 for i in range(pixel_count): if abs(sum(img1[i]) - sum(img2[i])) > pix_threshold: pixdiff += 1 diffperc = pixdiff / (pixel_count/40) if diffperc > img_threshold: # motion 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()