Fondamentalmente ci sono due opzioni: OpenCV e FastCV
OpenCV è una libreria più maturo con molto più funzionalità rispetto FastCV. Per molte attività di visione artificiale è possibile trovare solo le funzionalità di base in FastCV, mentre è possibile avere quasi tutte le alternative più popolari disponibili in OpenCV. Controlla i rilevatori di funzioni disponibili, ad esempio. OpenCV ha Harris, SURF, SIFT, FAST, ecc. FastCV, d'altra parte, ha solo Harris e FAST. OpenCV contiene ottimizzazioni hardware per diversi HW inclusi computer desktop e dispositivi mobili. La possibilità di utilizzare OpenCV in desktop offre un'opzione di sviluppo più flessibile, poiché puoi modificare e testare il codice su un computer desktop veloce prima di iniziare a lavorare sullo sviluppo mobile. Anche OpenCV è considerato come parte di a Khronos Computer Vision Group Proposal. Quindi, se questo viene approvato, OpenCV può diventare l'API standard per la visione artificiale. Per quanto posso vedere, FastCV offre ottimizzazioni superiori per le CPU Snapdragon. Questo potrebbe giocare un ruolo importante nella decisione a breve termine, ma sono sicuro che OpenCV colmerà il gap molto velocemente, se ve ne sarà.
Se si sceglie il percorso OpenCV, esistono due percorsi secondari: OpenCV con Android NDK vs JavaCV con Android SDK. JavaCV è un wrapper di OpenCV basato su JavaCpp. JavaCV esegue principalmente wrapping dell'API C, sebbene OpenCV offra anche un'API C++ orientata agli oggetti. L'API C++ gestisce, ad esempio, il rilascio automatico della memoria non utilizzata. Tuttavia, l'API C (quindi JavaCV) richiede di gestire manualmente il rilascio di immagini non utilizzate. Inoltre, quando si affronta un problema in JavaCV, è difficile affrontare il problema, perché ci sono troppe indicazioni indirette da verificare. I problemi sono più facili da individuare quando si utilizza OpenCV direttamente. Tuttavia, nel caso di Android, la difficoltà aggiuntiva di NDK non dovrebbe essere dimenticata.
Se la funzionalità OpenCV disponibile è necessaria per l'applicazione specifica e non è necessario alcun codice di elaborazione a livello di pixel personalizzato, JavaCV è la strada da percorrere. Tuttavia, se è richiesta una notevole quantità di codice di elaborazione delle immagini personalizzato, il codice Java rallenterà e sarà comunque necessario passare a NDK. In quest'ultimo caso, OpenCV è l'alternativa da scegliere.
fonte
2012-05-29 19:29:44
Qualcun'altro ha lavorato su un progetto simile prima: http: //www.cs.brown.edu/corsi/csci1290/results/final/sbnguyen/ –
@SamuelAudet dovresti metterlo come risposta ufficiale in modo da poterlo ripubblicare! :) – Peter
@SamuelAudet ora guardandolo Sembra che le informazioni nel link siano obsolete. – Peter