Neste tutorial, vamos ver como controlar o módulo de Camera (PiCam ou PiNoIR) do Raspberry Pi com Python, para isso vamos usar uma livraria nativa de Python chamada Python Picamera, criada por Dave Jones.
Instalação
Antes de mais nada, vamos ligar o módulo da Camera da Porta CSI do Raspberry Pi estando desligado da rede elétrica. A seguir iniciamos o Raspberry Pi com o nosso utilizador e senha. Abrimos uma janela do terminal e escrevemos:
sudo raspi-config
No menu, selecionamos a opção ‘Enable Camera‘ e logo colocamos a ‘Enable‘ e a ‘Finish‘ para reiniciar o Raspberry Pi. Uma vez instalado e ativado o módulo da Camera, vamos instalar a livraria de Dave Jones. Em primeiro lugar vamos atualizar os repositórios e o software do Raspberry Pi escrevendo estes comandos no terminal:
sudo apt-get update sudo apt-get upgrade
A seguir instalamos a livraria, escrevendo este comando no terminal:
sudo apt-get install python-picamera
Uso da livraria Python-Picamera
Vista anterior
Esta caraterística permite-nos visualizar em tempo real a imagem captada pelo módulo de câmara. Este é um pequeno script em Python que nos permitirá usar esta função:
#!/usr/bin/python import time import picamera with picamera.PiCamera() as picx: picx.start_preview() time.sleep(60) picx.stop_preview() picx.close()
Captura de fotografias
Com esta livraria tirar uma fotografia converte-se numa tarefa realmente simples, apenas se necessita de declarar uma simples função. Aqui tem um exemplo de como capturar uma foto:
#!/usr/bin/python import time import picamera with picamera.PiCamera() as picx: picx.start_preview() time.sleep(5) picx.capture('minhafoto.jpg') picx.stop_preview() picx.close()
No exemplo, a imagem vai-se guardar em formato JPG, mas podemos guardá-la noutros formatos como PNG, GIF, BMP, RGB, YUV e RAW, o que facilita poder guardar as imagens no formato que mais nos convenha.
Capturar um vídeo
Para tirar uma fotografia, também apenas precisamos de declarar uma simples função. No exemplo mostramos o preview ao mesmo tempo que gravamos, captura diretamente a um arquivo com extensão H264. É importante o uso de ‘wait_recording()‘ já que deste modo comprovam-se certos aspetos como por exemplo se há suficiente espaço no disco para gravar. Para dar um exemplo:
#!/usr/bin/python import time import picamera with picamera.PiCamera() as picx: picx.start_preview() picx.start_recording('mi_video.h264') picx.wait_recording(20) picx.stop_recording() picx.stop_preview() picx.close()
O sensor de camera tem aproximadamente 5MPx de resolução (2592×1944 pixeis) mas apenas se visualizam 1920×1080 pixeis nas pré-visualizações, por esta razão a livraria dispõe de uma opção para ajustar a resolução. Aqui está um exemplo:
#!/usr/bin/python import time import picamera with picamera.PiCamera() as picam: picam.resolution = (2592, 1944) picam.start_preview() time.sleep(3) picam.capture('foto.jpg') picam.stop_preview() picam.close()
Também podemos reduzir o peso das imagens, útil por exemplo se tivermos pouco espaço no disco.
#!/usr/bin/python import time import picamera with picamera.PiCamera() as picam: picam.resolution = (2592, 1944) picam.start_preview() time.sleep(3) picam.capture('foto.jpg',resize=(1024,768)) picam.stop_preview() picam.close()
Control do led da câmara
Se quiser capturar imagens ou videos sem ligar o led do módulo da câmara do Raspberry Pi pode desativa-lo graças a esta livraria:
#!/usr/bin/python import time import picamera with picamera.PiCamera() as picam: picam.led= False picam.start_preview() time.sleep(3) picam.stop_preview() picam.close()
Outros ajustes
Entre outras opções esta livraria, permite-nos controlar certos aspetos da captura de imagens e videos como o ISO, a velocidade de obturação, o brilho, além de que nos permite aplicar efectos como “negativo”, “solarizado” e GPen. Aqui está um exemplo de código:
#!/usr/bin/python import time import picamera with picamera.PiCamera() as picam: picam.start_preview() picam.brightness= 60 picam.ISO =100 time.sleep(3) picam.image_effect = 'negative' picam.shutter_speed= 300000 picam.capture('foto.jpg',resize=(1024,768)) picam.stop_preview() picam.close()
Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.
Não se esqueçam de fazer like na nossa página no facebook.
Todos os produtos utilizados neste artigo podem ser encontrados na loja de componentes eletrónicos ElectroFun.