OpenCV sui Google Glass… tempi NON ancora maturi!

Ho già sviluppato applicazioni su Android che utilizzassero la libreria OpenCv (release 2.4.5). Nonostante i buoni risultati ottenuti, ricordo quanto fosse pesante a livello di processore, e quanto fosse poco performante su uno smartphone. Non sto criticando la libreria, so bene che per queste cose c’è bisogno di un hardware adeguato e per ora (2013/2014) è difficile trovarlo negli smartphone.
Ricordo che il telefono si surriscaldava molto dopo solo pochi minuti di esecuzione dell’applicazione, i frame per second elaborati erano molto bassi (mi sembra intorno ai 5/10) e la batteria del dispositivo era messa a dura prova (più di una volta, nel periodo in cui stavo testando l’app, la batteria mi si è rincretinita passando da carica a scarica e viceversa nel giro di poco, fino a riprendersi dopo qualche giorno).

Beh, oggi ho appurato che niente è cambiato. Purtroppo.

Ho scaricato e installato sul progetto Eclipse la libreria OpenCV (versione 2.4.8) per Android, ma per farlo funzionare (un semplice tutorial) mancava ancora qualcosa: L’OpenCV Manager. Chi ha già utilizzato OpenCV su Android sa bene che prima di poter far funzionare i propri progetti OpenCV bisogna installare sul proprio dispositivo l’app “OpenCV Manager” scaricabile direttamente dal Play Store… il problema è che il Play Store non esiste sui Google Glass, o meglio: non in questa versione Explorer Edition. Cercando in lungo e largo, sono inciampato in questo articolo che mi ha indicato la giusta procedura per poter installare manualmente l’app Manager sui Glass tramite terminale.

Provando i primi esempi ho riscontrato che le performance non sono molto elevate, anzi.
Sinceramente non so perché ero fiducioso del fatto che si potesse utilizzare OpenCV sui Google Glass, ma ahimé posso assicurare che, allo stato attuale, OpenCV è improponibile, se non per prove temporanee di breve durata e con il caricabatteria alla mano!
Tralasciando il fatto che il sistema operativo che gira sui Glass (Android Kitkat 4.4 versione XE16) è molto instabile perché presenta vari bug e si riavvia da solo spesso e volentieri a causa di crash, le varie applicazioni provate (esempi banali) che utilizzavano la libreria OpenCV, dopo appena 2 o 3 minuti di esecuzione hanno cominciato a surriscaldare il dispositivo tanto da far comparire a schermo la scritta “Glass must cool down to run smoothly“. Non è niente di grave, l’ho già vista apparire altre volte, ma è evidente che i tempi non sono ancora maturi per sviluppare e proporre sul mercato applicazioni che presentano questo tipo di effetti collaterali così velocemente.
L’elaborazione di immagini è un processo molto elaborato che richiede molti calcoli, serve quindi un processore molto performante per poter eseguire questo tipo di operazioni e attualmente con l’hardware montato sui Glass, non ci siamo proprio.
I frame per second, dopo aver applicato qualche filtro, si aggirano tra i 1.4 e i 3.7 (molto scattoso) e lo sforzo che il dispositivo deve reggere per far girare un’applicazione OpenCV è esageratamente alto, assolutamente non utilizzabile in mobilità. La attuale batteria dei Glass non dura più di 45 minuti in video recording, quindi con OpenCV in esecuzione non gli darei più di 15 minuti, sempre che i Glass non si spengano preventivamente per evitare di bruciarsi.

Il modo migliore per poter fare image processing, quindi, è utilizzare i Glass solo come “interfaccia” e non come “mente”, questa l’idea di base: Catturare il flusso video tramite i Glass, spedire il flusso ad un server (computer o smartphone connesso tramite bluethoot o wifi), che lo elabora e che restituisce indietro il risultato dell’elaborazione.

L’evoluzione nel campo tecnologico corre alla velocità della luce, sono convinto che non passerà molto tempo prima che questo problema diventi solo un lontano ricordo, anche perché la funzionalità principale di uno schermo che può essere posizionato davanti alla vista è sicuramente quella di poter elaborare le immagini per restituire a schermo un risultato rielaborato in real time. Per esempio, si immagini di andare dal parrucchiere il quale invece che un catalogo cartaceo ti fa scegliere l’acconciatura direttamente dall’applicazione ufficiale del negozio che funziona semplicemente specchiandosi allo specchio. Tu indossi i Glass, ti specchi e vedi in real time direttamente sulla tua testa l’acconciatura scelta… scrollando a destra e  a sinistra cambi la tipologia di taglio e quando hai scelto lo comunichi al parrucchiere.. figo no?

Lascia una risposta