bbc3c1ea9a34ca561b2ec34ab53b77f96cd1e689
[imago.git] / capture.py
1 #!/usr/bin/env python
2
3 """Go image capture"""
4
5 import os
6 import sys
7 import argparse
8
9 import pygame
10 from pygame.locals import QUIT, KEYDOWN
11 import Image
12
13 from camera import Camera
14
15 class Screen:
16     def __init__(self, res):
17         pygame.init()
18         pygame.display.set_mode(res)
19         pygame.display.set_caption("Go image capture")
20         self._screen = pygame.display.get_surface()
21
22     def display_picture(self, im):
23         pg_img = pygame.image.frombuffer(im.tostring(), im.size, im.mode)
24         self._screen.blit(pg_img, (0,0))
25         pygame.display.flip()
26
27
28 def main():
29     parser = argparse.ArgumentParser(description=__doc__)
30     parser.add_argument('-d', type=int, default=0,
31                         help="video device id")
32     parser.add_argument('-r', type=int, nargs=2, default=[640, 480],
33                         help="set camera resolution")
34     args = parser.parse_args()
35
36     res=(args.r[0], args.r[1])
37
38     cam = Camera(vid=args.d, res=res)
39     screen = Screen(res)
40
41     im_number = 0
42
43     saving_dir = "./captured/"
44
45     if not os.path.isdir(saving_dir):
46         os.makedirs(saving_dir)
47
48     while True:
49         event = pygame.event.wait()
50         if event.type == QUIT:
51             break
52         elif event.type == KEYDOWN:
53             im = cam.get_image()
54             screen.display_picture(im)
55             im.save(saving_dir + "{0:0>3}.jpg".format(im_number), 'JPEG')
56             im_number += 1
57
58     del cam
59     
60 if __name__ == '__main__':
61     try:
62         main()
63     finally:
64         pygame.quit()