In questo nuovo video per la serie Raspberry vedremo come usare la Pi Camera.

Il modulo fotocamera è costituito da un piccolo circuito (da 25 mm a 20 mm per 9 mm), che si connette al connettore bus dell'interfaccia seriale della fotocamera (CSI) di Raspberry Pi tramite un cavo a nastro flessibile.

Attenzione, non bisogna spingere con forza il cavo nell’interfaccia, la parte di plastica nera si apre tirando in alto e spostandolo leggermente verso il lato opposto ai suoi stessi PIN, inserite il BUS e chiudetelo.

Il sensore di immagine della fotocamera ha una risoluzione nativa di 5 megapixel oltre ad una lente a fuoco fisso.
Il software per la fotocamera supporta fotografie a piena risoluzione fino a 2592x1944 e risoluzioni video di 1080p30, 720p60 e 640x480p60 / 90.
Nel corso di questa serie vedremo come programmare Raspi per riconoscere persone e molto altro.

Dopo aver connesso la Pi camera e dopo aver avviato raspi dal desktop, clicchiamo “MENÙ” (lampone, per intenderci), “preferenze” e da lì scegliamo “Raspberry configuration”, da “interfacce” controllare che la telecamera sia stata acquisita correttamente e, qualora non fosse attivata, sarà necessario riavviare dopo aver abilitato la camera.  

Abilitata  la telecamera e riavviato il sistema possiamo scegliere se controllare la nostra camera da terminale (usando raspistill e raspivid) oppure usare Python. Usare quest’ultimo ci tornerà utile dopo per fare... cose varie.

Dunque aprire l’IDE di Python 3. Nell’interprete aprire un nuovo file e rinominarlo con qualunque nome diverso da picamera.py. Importare il modulo della Pi-camera con:

from picamera import PiCamera

Questo comando è sufficiente per usare la nostra Picamera.
Possiamo anche importare la funzione sleep, per intenderci il delay di Arduino. La stringa necessaria è:

from time import sleep

Creiamo quindi una nuova variabile, tecnicamente sarebbe un oggetto ma è più preciso parlare di variabile del tipo definito dalla libreria picamera. Il nome scelto è “fotocamera”, ma potete scegliere il nome che più vi piace.
Da ora, con fotocamera.x potremo far succedere x cose alla nostra camera.

Per esempio, con:

fotocamera.start_preview()
sleep(5)
fotocamera.stop_preview()

In questo modo dopo aver salvato e premuto F5, avvieremo il nostro script.
Molto semplicemente, avremo “comandato” all’oggetto “fotocamera”, di avviare l’anteprima, continuare a farlo per 5 secondi e fermarsi (cosa da non dimenticare!).
Tra le parentesi potremo mettere un valore di α, per variare la trasparenza dell’anteprima.

Per salvare una foto durante l’anteprima, possiamo inserire tra lo sleep e lo stop, “capture” e tra le parentesi, il percorso salvataggio del file. Quindi il nostro codice sarà così:

fotocamera.start_preview()
sleep(5)
fotocamera.capture(‘/home/pi/desktop/nomefile.jpg’)
fotocamera.stop preview()

ctrl+s per salvare e F5 per avviare lo script e… Magia, la nostra foto direttamente da raspi, al desktop!! Ora la videocamera caricherà l’anteprima, ci darà 5 secondi per inquadrare e scatterà la foto, salvandola nel percorso indicato. Senza lo “sleep” la scatterebbe subito, senza darci tempo per inquadrare.

La risoluzione della fotocamera, è settata di default, sulla risoluzione del nostro schermo, quindi se abbiamo uno schermo 1080p faremo foto a quella risoluzione. I parametri di .resolution e .framerate possono essere usati per specificare una risoluzione iniziale e un framerate.

from picamera import PiCamera
from time import sleep
fotocamera = PiCamera()
fotocamera.resolution  = (2592, 1944)
fotocamera.framerate = 15
fotocamera.start_preview()
sleep(5)
fotocamera.capture ()
fotocamera.stop preview()


In questo caso, avremo inserito il massimo della risoluzione, per la picamera V1.3.
Qualora aveste la picamera V2, potrete avere una risoluzione fino a 3280x2464. Il framerate setta quante letture di sensore fare per ogni secondo, quasi come un otturatore ma più rapido, il massimo è 30 fps.
La minima risoluzione è 64x64 che è una risoluzione molto utile per fare un algoritmo che sa riconoscere i colori o qualcosa in movimento, l’esecuzione del programma sarà molto veloce, in quanto l’immagine da processare è piccola.

Per bilanciare contrasto e luminosità si usano le stringhe fotocamera.contrast()fotocamera.brightness().
Per il bilanciamento automatico del bianco: camera.awb_mode(x) dove x è uno a scelta tra:

  • sunlight
  • tungsteno
  • fluorescente

questi regolano la temperatura di colore in una certa scena.


camera.exposure_mode(x): questa stringa regola la modalità di esposizione e x può essere:

  • notte
  • spiaggia
  • fuochi d’artificio
  • controluce

Per registrare un video, procediamo con la stringa che segue:

from picamera import PiCamera
from time import sleep
fotocamera = PiCamera()
fotocamera.start_preview()
fotocamera.start_recording()
sleep(10)
fotocamera.capture(‘/home/pi/desktop/nomefile.h264’)
fotocamera.stop_recording()
fotocamera.stop_preview()

Non codifica in formato MP4, bisogna usare per forza la codifica h264.

Così registrerà per 10 secondi. Per visualizzarlo, lanciamo il video player nativo in Pi “omxplayer”, la sintassi è la seguente:

omxplayer nomefile.h264


Senza un framerate, lo visualizzerà al massimo della velocità possibile.

Per ruotare l’immagine catturata dalla camera si usa .rotation e prende valori solo di 90° per volta. Il nostro script a questo punto sarà:

from picamera import PiCamera
from time import sleep
fotocamera = PiCamera()
fotocamera.start_preview()
sleep(5)
fotocamera.rotation = 90
sleep(5)
fotocamera.rotation = 180
sleep(5)
fotocamera.rotation = 270
sleep(5)
fotocamera.stop_preview()

Così ogni 5 secondi l’immagine ruoterà di 90°.

Divertirsi con Raspi è sano e soddisfacente, con la pi-camera possiamo veramente fare moltissime cose. Non perdete i prossimi video per programmare la vostra pi-camera insieme ad overVolt!