Dia desses eu redescobri as imagens da minha webcam. Tirei vários screenshots usando o aplicativo cheese, desde que minha mais nova nasceu. E nem me lembrava disso.
Consegui criar uma videozinho com elas, o que foi bem legal, mostrando o crescimento dela (e minha barba ficando cada vez mais branca).
A ideia inicial era gerar um gif animado, mas o mesmo ficou em 85 MB de tamanho. E sem som.
Então resolvi fazer 2 coisas:
- Um script pra ficar pegando imagens da webcam sem precisar de um aplicativo gráfico.
- Gerar via linha de comando o gif animado.
A captura do screenshot, eu consegui fazer utilizando pygame. O módulo já inclui vários binding pra realizar ações como capturar da webcam e salvar a imagem. O script ficou assim:
#! /usr/bin/python -u """ Not only Obamas _is_ watching you... Based in: http://stackoverflow.com/questions/15870619/python-webcam-http-streaming-and-image-capture """ SAVEDIR = "/home/helio/Pictures/Webcam" import pygame, sys import pygame.camera import time, random pygame.init() pygame.camera.init() cam = pygame.camera.Camera("/dev/video0", (640,480)) while True: print "Taking a shot:", cam.start() image = cam.get_image() cam.stop() timestamp = time.strftime("%Y-%m-%d_%H%M%S", time.localtime()) filename = "%s/%s.jpg" % (SAVEDIR, timestamp) print "saving into %s" % filename pygame.image.save(image, filename) time.sleep(random.randrange(10) * 60)
Chamei de obamawatch.py em homenagem à espionagem da NSA nas nossas vidas, e que o presidente Obama não fez esforço nenhum pra diminuir ou mesmo evitar. É um script super intrusivo, pois tira fotos de tempos em tempos, podendo pegar situações que… humm… não o faça se sentir muito orgulhoso. Então é bom rodar de vez em quando.
Pra juntar as imagens JPEG geradas em um GIF animado, usei o imagemagick com o mogrify. Com o mogrify, na verdade, eu diminuí as imagens pra 320×240 pixels, pra diminuir o tamanho. Então usei o imagemagick pra gera o GIF.
mogrify -resize 320x240 *jpg gm convert -delay 20 2013-09-07_1* animated-2013-09-07.gif
Com isso consegui o resultado abaixo. Bem divertido.