argparse for capture
[imago.git] / capture.py
index 6aeaf53..a4268a0 100755 (executable)
@@ -1,6 +1,9 @@
 #!/usr/bin/env python
 
 #!/usr/bin/env python
 
+"""Go image capture."""
+
 import sys
 import sys
+import argparse
 
 import pygame
 from pygame.locals import QUIT, KEYDOWN
 
 import pygame
 from pygame.locals import QUIT, KEYDOWN
@@ -8,21 +11,49 @@ import Image
 
 from camera import Camera
 
 
 from camera import Camera
 
+class Screen:
+    def __init__(self):
+        pygame.init()
+        pygame.display.set_mode((640,480))
+        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('file', metavar='file', nargs=1,
+    #                    help="image to analyse")
+    #parser.add_argument('-w', type=int, default=640,
+    #                    help="scale image to the specified width before analysis")
+    parser.add_argument('-d', '--device', type=int, default=0,
+                        help="number of video device to use")
+    #parser.add_argument('-s', '--save', dest='do_something', action='store_const',
+    #                    const=image_save, default=im_debug.show,
+    #                    help="save images instead of displaying them")
+    args = parser.parse_args()
 
 
-pygame.init()
-window = pygame.display.set_mode((640,480))
-pygame.display.set_caption("WebCam Demo")
-screen = pygame.display.get_surface()
+    cam = Camera(device=args.device)
+    screen = Screen()
 
 
-cam = Camera()
+    im_number = 0
 
 
-while True:
-    events = pygame.event.get()
-    for event in events:
+    while True:
+        event = pygame.event.wait()
         if event.type == QUIT:
         if event.type == QUIT:
-            sys.exit(0)
+            break
         elif event.type == KEYDOWN:
             im = cam.get_image()
         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("./captured/{0:0>3}.jpg".format(im_number), 'JPEG')
+            im_number += 1
+    
+if __name__ == '__main__':
+    try:
+        main()
+    finally:
+        pygame.quit()