2015-05-03 15 views
6

C'è un modo per utilizzare i moduli contrib di opencv in Android? Sto specificatamente utilizzando il modulo di testo. C'è una lib Android per questi moduli. Ho il mio codice che funziona su desktop e sto cercando di migrare i miei codici su Android. Qualsiasi intuizione sarebbe gr8.Utilizzo dei moduli contrib di OpenCv per Android

+2

Dovrai compilare il tuo SDK Android OpenCV con '/piattaforme/android/build_sdk.py'. –

risposta

2

Avevo problemi anche a trovare soluzioni a questi problemi. Pensavo di trovare una domanda pertinente là fuori e di dare una risposta alla comunità nel caso in cui altri stessero cercando anche soluzioni a un problema simile a questo e al mio. Compilation è stato fatto su un MacBook Retina da 13" .

Le istruzioni fornite sono un po 'incompleta e non ci sono ulteriori passi che saranno necessari per arrivare ad un prodotto finale.

All'inizio si seguirà la procedura standard come delineato in linea

$ cd <opecv_directory> 
$ mkdir build 
$ cd <opencv_build_directory> 
$ cmake -D OPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory> 
$ make -j5 
$ make install 

in aggiunta a questo, è possibile imbattersi in un errore o due. Avevo bisogno di installare alcuni componenti mancanti, al fine di ottenere le cose passate che mancavano, ma questo può differire per te (ho studiato gli errori e ho capito che avevo bisogno di componenti aggiuntivi)

brew install ninja 
brew install oxygen 
brew install ant 

Ho anche corse in un errore con un modulo che richiede la necessità di seguito dichiarato nel codice sorgente (o con le bandiere del compilatore):

#define SOLARIS_64BIT_ENABLED 

Un'altra cosa che puoi fare è rimuovere altri moduli la cartella contrib a cui potresti non essere interessato durante la compilazione. Basta includere i moduli che vuoi e spero che quelli siano buoni. L'ho fatto semplicemente rimuovendo uno o due dalla cartella/modules e poi rianliando lo script python.

Per eseguire la compilazione era necessario un ultimo script python. Ho creato una directory accanto all'albero dei sorgenti principale e alla cartella contrib.

OpenCVSource 
    -> opencv 
    -> opencv_contrib 
    -> android_opencv_build 

La chiamata di seguito è stata fatta dalla directory in cui voglio che il build svolgerà dal, così ho cambiato la directory la chiamata è stata la seguente:

python ../opencv/platforms/android/build_sdk.py --extra_modules_path ../opencv_contrib/modules --ndk_path <your-path-to-ndk-top-level-folder> --sdk_path <your-path-to-sdk-top-level-folder> ./ ../opencv 

Questo costruisce solo. quindi i file necessari per l'utilizzo della libreria, ma non creano il file .jar di cui avrete bisogno per utilizzare i nuovi binari. Per farlo, accedi alla tua cartella di build (il mio come è in Android_opencv_build/OpenCV-android-sdk)

Carica questo progetto in Eclipse nel modo standard con l'importazione del progetto Android esistente nello spazio di lavoro. Hai solo bisogno del progetto/sdk, ma sentiti libero di caricare anche i campioni se lo desideri. Quindi crea il progetto. Potrebbe essere necessario modificare la build di destinazione per supportare le nuove API della fotocamera per una build di successo; nel mio caso cambiando l'obiettivo al livello API 21.

Troverai quindi il file .jar nella directory/bin del progetto. I file .jar e .so trovati in android_opencv_build/OpenCV-android-sdk/sdk/native/jni/contengono i file .so necessari che è necessario includere nella cartella projects/lib accanto a questo jar.

Ora dovresti avere tutto ciò di cui hai bisogno. Dato che stiamo lavorando con i moduli contrib (o no se lo stai costruendo per altri motivi), è possibile che tu corra attraverso altri errori nel processo di compilazione che non sono abbastanza stabili e necessiti di qualche attenzione.Questo non può essere aiutato, ma le persone possono sentirsi liberi di aggiungere commenti alle soluzioni di altre persone e questo post per aiutarli a risolverli se hanno trovato una soluzione.

+0

Va notato che non tutti i moduli contrib in realtà creano una controparte java. Ad esempio, quando si lavora con i moduli Aruco non ci sono classi java per loro. Dovrai creare jni wrapper al codice sorgente e usare le chiamate alle librerie C++. Il .jar e .so consentono solo l'accesso ad essi dal tuo progetto Android. –

0

Mi trovavo di fronte allo stesso problema, dopo un po 'di lavoro mi sono imbattuto in un articolo autoesplicabile per costruire l'opencv con moduli aggiuntivi. Il link per la stessa è here

E nel caso in cui qualcuno vuole usare un maestro OpenCV già costruito con moduli aggiuntivi contrib, possano sentirsi liberi di usarlo dal mio repo, il link per lo stesso è this, questo articolo funziona solo su Windows, solo per motivi di informazione in quanto non sono riuscito a seguire lo stesso su un Mac.