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() e 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!