Fotografia time-lapse com uma Raspberry Pi Zero 2 W Deixe um comentário

A técnica timelapse de fotografia consiste em tirar uma sequência de fotos em intervalos fixos ao longo de um tempo grande, sem mover a câmera. Apresentando estas fotos sequencialmente podemos ver em um intervalo curto um processo demorado e perceber melhor o que aconteceu. Neste artigo vamos ver como podemos fazer um time-lapse com uma Raspberry Pi Zero 2 W e um módulo de câmera.

Raspberry Pi Zero 2 W com módulo de câmera
Raspberry Pi Zero 2 W com módulo de câmera

Material Necessário

Obs: Na foto e nos exemplos estou usando uma câmera com lente grande angular e já com cabo para o Pi Zero 2W.

Preparação da Pi Zero 2W

Instale no cartão SD o Raspberry Pi OS. Nos meus testes eu usei o Raspberry Pi OS Lite 32 bits, versão “bullseye”, fazendo toda operação remotamente via SSH. Usando a versão atual do Raspberry Pi Imager, você pode configurar senha, WIFI e SSH junto com a gravação do cartão.

Conecte a câmera ao Raspberry Pi Zero antes de ligá-lo. Confira as instruções nesse link. Com a câmera e cartão SD instalado, alimente o Raspberry Pi Zero com o cabo micro USB e a fonte de 5V.

Após o boot, execute o comando “sudo raspi-config” e habilite o suporte “legado” à câmera, conforme as telas abaixo (isto é necessário para podermos controlar a câmera a partir de um programa Python).

Selecione Interface Options
Selecione Interface Options
Habilite o Modo Legado
Habilite o Modo Legado
Mensagem informando que o modo Legacy foi ativado
Mensagem informando que o modo Legacy foi ativado

Em seguida reinicie o sistema através do comando “sudo reboot”.

Usando o Utilitário raspistill

O utilitário raspistill já vem instalado no Raspberry Pi OS. Vamos primeiro tirar uma foto isolada, para conferir que a câmera está funcionando:

raspistill -n -o teste.jpg

Se você estiver operando com teclado e monitor, você pode omitir a opção -n para ver uma pré-apresentação (preview) da foto.

Este comando tira uma foto e a armazena no arquivo teste.jpg.

O raspistill pode ser usado para timelapse:

raspistill -t 60000 -tl 5000 -o foto%02d.jpg

A opção -t determina o tempo total e -tl o tempo entre as fotos; ambos os valores são em milissegundos. Portanto o comando acima vai tirar fotos durante 60 segundos, com intervalo de 5 segundos. O “%02d” no nome do arquivo será substituído pelo número da foto (00, 01, 02), você pode pedir mais dígitos (“%04d”, por exemplo) ou tirar o 0 inicial (“%d”).

Exemplo de Timelapse com as configurações acima
Exemplo de Timelapse com as configurações acima

Uma documentação do raspistill pode ser vista neste documento.

Usando Python para Timelapse

Podemos fazer aplicações mais sofisticadas de fotografia controlando a câmera através de um programa Python. Isto é feito através da biblioteca picamera, que pode ser instalada pelos comandos abaixo:

sudo apt-get update
sudo apt-get install python3-picamera

O programa abaixo é um exemplo bem simples de registro automático de fotos:

#!/usr/bin/env python3
import time
from picamera import PiCamera

camera = PiCamera()
# Seleciona a resolução
camera.resolution = (1024, 768)
# Da um tempo para a câmera iniciar
time.sleep(2)
# Define os valores para o timelapse (em segundos)
intervalo = 5
tempoTotal = 300
# Loop para as fotos
try:
  final = time.time() + tempoTotal
  while time.time() < final:
    ts=time.strftime("%Y-%m-%d-%H%M%S", time.gmtime())
    camera.capture('foto_'+ts+'.jpg')
    time.sleep(intervalo)
except KeyboardInterrupt:
  sys.exit()

Para rodar o programa, você pode digitá-lo em um arquivo tl.py e marcá-lo como executável:

chmod +x tl.py

Em seguida você pode executá-lo com o comando abaixo:

./tl.py

A documentação completa da biblioteca pode ser vista nesse link.

Fazendo um Vídeo com as Imagens

Uma vez capturadas as imagens, que tal fazer um vídeo com elas? Podemos fazer isso usando o programa ffmpeg. Para instalar:

sudo apt-get update
sudo apt-get install ffmpeg

O comando a seguir gera o vídeo

ffmpeg -r 10 -f image2 -pattern_type glob -i ‘foto*.jpg’ -s 1280×720 -vcodec libx264 timelapse.mp4

Vamos ver o que faz cada um dos parâmetros:

  • r 10 define a quantidade de imagens por segundo de vídeo (frame rate)
  • f image2 informa que as imagens serão selecionadas por um padrão
  • pattern_type glob seleciona o tipo de padrão para a seleção das imagens
  • i ‘foto*.jpg’ é o padrão a usar
  • s 1280×720 seleciona a resolução do vídeo
  • vcodec libx264 seleciona a compressão a ser usada no vídeo
  • timelapse.mp4 é o nome do vídeo que será gerado

Atenção que este processo é demorado se você tiver muitas fotos (neste ponto a Raspberry Pi Zero 2 leva muita vantagem sobre a Zero original).

Conclusão

Neste artigo nós conhecemos um pouco sobre a técnica de timelapse e vimos duas formas de usá-la com uma Raspberry Pi Zero 2 W equipada com uma câmera. O programa raspistill é uma forma simples de tirar fotos em sequência, com a biblioteca picamera nós podemos controlar a câmera através de um programa Python. Vimos também como gerar um vídeo a partir das imagens capturadas.

O controle a partir do Python possibilita aplicações mais complexas. Por exemplo, podemos montar a câmera ou o Raspberry Pi em cima de um servo motor e controlar também o movimento da câmera. Podemos também acionar a câmera em função de sensores (por exemplo um sensor de presença ou de distância). A sua imaginação é o limite!

Pretende fazer um uso destas técnicas? Conte para nós nos comentários! E não esqueça de nos seguir a FilipeFlop no Instagram!

Faça seu comentário

Acesse sua conta e participe