X-Git-Url: http://git.tomasm.cz/imago.git/blobdiff_plain/6f1565eb566394cd75f453303df30d904e333fa2..b0d73e96d68198be32495d7b36505c6d2e3f6810:/capture.py?ds=inline diff --git a/capture.py b/capture.py index 6aeaf53..dbaef64 100755 --- a/capture.py +++ b/capture.py @@ -1,6 +1,11 @@ #!/usr/bin/env python +"""Go image capture""" + +import os import sys +import argparse +import time import pygame from pygame.locals import QUIT, KEYDOWN @@ -8,21 +13,91 @@ import Image from camera import Camera +class Screen: + def __init__(self, res): + pygame.init() + pygame.display.set_mode(res) + pygame.display.set_caption("Go image capture") + self._screen = pygame.display.get_surface() + + def display_picture(self, im): + pg_img = pygame.image.frombuffer(im.tostring(), im.size, im.mode) + self._screen.blit(pg_img, (0,0)) + pygame.display.flip() + + +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() + + res=(args.r[0], args.r[1]) + + cam = Camera(vid=args.d, res=res) + screen = Screen(res) + + im_number = 0 -pygame.init() -window = pygame.display.set_mode((640,480)) -pygame.display.set_caption("WebCam Demo") -screen = pygame.display.get_surface() + saving_dir = "./captured/" + time.strftime("%Y-%m-%d %H:%M/") -cam = Camera() + 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 + + im = cam.get_image() + screen.display_picture(im) + clock.tick(5) + + + if args.a > 0: + last = 0 + clock = pygame.time.Clock() + done = False + + while not done: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + done = True + if time.time() - last > args.a: + 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 + clock.tick(15) + + else: + while True: + event = pygame.event.wait() + if event.type == QUIT: + break + if event.type != KEYDOWN: + continue -while True: - events = pygame.event.get() - for event in events: - if event.type == QUIT: - sys.exit(0) - elif event.type == KEYDOWN: im = cam.get_image() - pg_img = pygame.image.frombuffer(im.tostring(), im.size, im.mode) - screen.blit(pg_img, (0,0)) - pygame.display.flip() + screen.display_picture(im) + im.save(saving_dir + "{0:0>3}.jpg".format(im_number), 'JPEG') + im_number += 1 + + del cam + +if __name__ == '__main__': + try: + main() + finally: + pygame.quit()