#!/usr/bin/env python
import cv
import collections

BEFORE = 5
AFTER = 5

class Dings:
    def __init__(self):
        self.capture = cv.CaptureFromCAM(0)
        cv.NamedWindow("Dings", 1)
        self.buf = collections.deque(maxlen=BEFORE + AFTER)

    def save(self):
        n = 0
        for pic in self.buf:
            filename = "pic%03d.jpg" % n
            cv.SaveImage(filename, pic)
            n = n + 1

    def run(self):
        is_saving = False
        save_after = 0
        while True:
            new_image = cv.QueryFrame(self.capture)
            save_img = cv.CloneImage(new_image)
            self.buf.append(save_img)
            cv.ShowImage("Dings", new_image)
            # Listen for key
            c = cv.WaitKey(7) 
            if c == 27:   #Escape
                break
            elif c == 32:  #space
                is_saving = True
            if is_saving: 
                save_after = save_after + 1
                if save_after > AFTER:
                    self.save()
                    is_saving = False

if __name__=="__main__":
    t = Dings()
    t.run()
