Una libreria "C" per la camera del Raspberry
Come leggere i dati RGB grezzi dalla videocamera del Raspberry in un programma "C"Per un progetto di uno dei nostri soci, avevamo la necessità di leggere i dati grezzi della videocamera di un RaspberryPi Zero, elaborarli, e inviarli pixel per pixel ad un monitor esterno collegato via SPI.
Per fare questo, i primi test son stati fatti con Python e la libreria pycamera. Tutto funziona bene finché non si cerca di avere un framerate superiore ai 2 fps.
Dai nostri test fatti, il piZero 1.3 non regge, in python, oltre i 2.3fps. Contate che i dati (acquisiti a bassa risoluzione, come 320x200) erano poi elaborati semplicemente pixel per pixel, per cui era necessario un po’ di calcolo per ogni pixel.
La strada del python, anche se la adoriamo per quasi tutti i progetti, non era percorribile. Rimaneva il C, ma in C, per Raspberry, non ho trovato librerie che permettessero l’accesso ai dati grezzi.
Le uniche cose che c’erano erano i programmi tipo raspistill o raspiv2dYUV, distribuiti insieme a Raspbian, e di cui c’erano i sorgenti.
Armati di pazienza abbiamo generato i due programmi (che dovrebbero diventare librerie ma non abbiamo il tempo) cameraci e videoci. Orrendi giochi di parole sul linguaggio “C”, e che sono in pratica delle piccole riscritture dei programmi raspistillYUV e raspividYUV e che portano all’esterno una semplice interfaccia “C” che permette ad un ,programma qualsiasi di accedere ai dati grezzi di una immagine presa da telecamera, o di un video.
In questo modo le performance sono balzate, sempre sul piZero, a più di 20fps. Non è altissimo, ma va bene per i nostri scopi. Nell’immagine il nostro font scrive FS: 20.05 (Frame per Second)