From 442f568116a71d79586ee44bb31ae1b96d233a91 Mon Sep 17 00:00:00 2001 From: Tomas Musil Date: Fri, 7 Sep 2012 23:56:26 +0200 Subject: [PATCH] capture class --- capture.py | 98 +++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 55 insertions(+), 43 deletions(-) diff --git a/capture.py b/capture.py index dbaef64..963f6ed 100755 --- a/capture.py +++ b/capture.py @@ -25,46 +25,37 @@ class Screen: self._screen.blit(pg_img, (0,0)) pygame.display.flip() +class Capture: + def __init__(self, device, res): + self.cam = Camera(vid=device, res=res) + self.screen = Screen(res) -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('-d', type=int, default=0, - help="video device id") - parser.add_argument('-a', type=int, default=0, - help="take picture automaticaly every A seconds") - parser.add_argument('-r', type=int, nargs=2, default=[640, 480], - help="set camera resolution") - args = parser.parse_args() + self.im_number = 0 - res=(args.r[0], args.r[1]) + self.saving_dir = "./captured/" + time.strftime("%Y-%m-%d %H:%M/") - cam = Camera(vid=args.d, res=res) - screen = Screen(res) + if not os.path.isdir(self.saving_dir): + os.makedirs(self.saving_dir) - im_number = 0 + def __del__(self): + del self.cam - saving_dir = "./captured/" + time.strftime("%Y-%m-%d %H:%M/") - - if not os.path.isdir(saving_dir): - os.makedirs(saving_dir) - - done = False - clock = pygame.time.Clock() - while not done: #live preview - for event in pygame.event.get(): - if event.type == pygame.QUIT: - done = True - del cam - sys.exit() - if event.type == pygame.KEYDOWN: - done = True + def live(self): + done = False + clock = pygame.time.Clock() + while not done: #live preview + for event in pygame.event.get(): + if event.type == pygame.QUIT: + done = True + sys.exit() + if event.type == pygame.KEYDOWN: + done = True - im = cam.get_image() - screen.display_picture(im) - clock.tick(5) + im = self.cam.get_image() + self.screen.display_picture(im) + clock.tick(5) - - if args.a > 0: + def auto(self, interval): last = 0 clock = pygame.time.Clock() done = False @@ -73,15 +64,15 @@ def main(): for event in pygame.event.get(): if event.type == pygame.QUIT: done = True - if time.time() - last > args.a: + if time.time() - last > interval: last = time.time() - im = cam.get_image() - screen.display_picture(im) - im.save(saving_dir + "{0:0>3}.jpg".format(im_number), 'JPEG') - im_number += 1 + im = self.cam.get_image() + self.screen.display_picture(im) + im.save(self.saving_dir + "{0:0>3}.jpg".format(self.im_number), 'JPEG') + self.im_number += 1 clock.tick(15) - else: + def manual(self): while True: event = pygame.event.wait() if event.type == QUIT: @@ -90,11 +81,32 @@ def main(): continue im = cam.get_image() - screen.display_picture(im) - im.save(saving_dir + "{0:0>3}.jpg".format(im_number), 'JPEG') - im_number += 1 + self.screen.display_picture(im) + im.save(self.saving_dir + "{0:0>3}.jpg".format(self.im_number), 'JPEG') + self.im_number += 1 + + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('-d', type=int, default=0, + help="video device id") + parser.add_argument('-a', type=int, default=0, + help="take picture automaticaly every A seconds") + parser.add_argument('-r', type=int, nargs=2, default=[640, 480], + help="set camera resolution") + args = parser.parse_args() - del cam + res=(args.r[0], args.r[1]) + capture = Capture(args.d, res) + + capture.live() + + if args.a > 0: + capture.auto(args.a) + else: + capture.manual() + del capture if __name__ == '__main__': try: -- 2.4.2