web-dev-qa-db-fra.com

OpenCV dans Android Studio

Je souhaite utiliser la bibliothèque OpenCV dans mon application avec Android Studio. J'ai suivi les instructions trouvées ici mais j'obtiens une erreur 

Configuration avec le nom 'default' introuvable

Qu'est-ce qui ne va pas?

J'utilise Android Studio 1.0 avec la version 2.2.1.

124
Bartosz Bialecki

Les étapes ci-dessous pour utiliser Android OpenCV sdk dans Android Studio. Ceci est une version simplifiée de cette réponse ( 1 ) SO.

  1. Téléchargez le dernier sdk OpenCV pour Android à partir de OpenCV.org et décompressez le fichier Zip.
  2. Importer OpenCV dans Android Studio, à partir de Fichier -> Nouveau -> Module d'importation, choisissez le dossier sdk/Java de l'archive opencv non compressée. 
  3. Mettez à jour build.gradle sous le module OpenCV importé pour mettre à jour 4 champs correspondant à votre projet build.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion et d) targetSdkVersion. 
  4. Ajoutez une dépendance de module à l'aide de Application -> Paramètres du module, puis sélectionnez l'onglet Dépendances. Cliquez sur l'icône + en bas, choisissez dépendance du module et sélectionnez le module OpenCV importé .
    • Pour Android Studio v1.2.2, pour accéder aux paramètres du module: Dans la vue du projet, cliquez avec le bouton droit sur le module dépendant -> Ouvrir les paramètres du module 
  5. Copier le dossier libs _ sous sdk/native sur Android Studio sous app/src/main
  6. Dans Android Studio, renommez le répertoire libs copié en jniLibs et vous avez terminé.

L'étape (6) consiste en ce qu'Android Studio attend des bibliothèques natives dans le dossier app/src/main/jniLibs au lieu du dossier libs plus ancien. Pour ceux qui découvrent Android OpenCV, ne manquez pas les étapes ci-dessous. 

  • include static{ System.loadLibrary("opencv_Java"); } (Remarque: pour OpenCV version 3 à cette étape, vous devriez plutôt charger la bibliothèque opencv_Java3.)
  • Pour l'étape (5), si vous ignorez une bibliothèque de plate-forme telle que x86, assurez-vous que votre périphérique/émulateur ne se trouve pas sur cette plate-forme.

OpenCV écrit est en C/C++. Les wrappers Java sont 

  1. Kit de développement logiciel (SDK) OpenCV Android - OpenCV.org a conservé le wrapper Java Android. Je suggère celui-ci.
  2. OpenCV Java - OpenCV.org maintenait un wrapper Java généré automatiquement.
  3. JavaCV - Enveloppe Java populaire maintenue par un ou plusieurs développeurs indépendants. Pas spécifique à Android. Cette bibliothèque pourrait ne plus être synchronisée avec les versions plus récentes d'OpenCV.
290
Kiran

Pour toutes les personnes qui souhaitaient fuir avec toutes les étapes et les captures d'écran des réponses (géniales!) Ci-dessus, cela a fonctionné pour moi avec Android studio 2.2.1:

  1. Créez un nouveau projet, nommez-le comme vous voulez et prenez la valeur par défaut (minSdkVersion 15, c'est bien).
  2. Téléchargez le fichier Zip à partir d'ici: https://sourceforge.net/projects/opencvlibrary/files/opencv-Android/ (j'ai téléchargé la version 3.1.0, mais il peut y avoir une version plus récente).
  3. Décompressez le fichier Zip, le meilleur endroit est dans votre dossier d’espace de travail, mais ce n’est pas grave.
  4. Dans Android Studio, cliquez sur File->New-> Import Module, naviguez jusqu'à \path_to_your_unzipped_file\OpenCV-Android-sdk\sdk\Java et cliquez sur OK, puis acceptez tous les dialogues par défaut.
  5. Dans le fichier gradle de votre module app, ajoutez ceci au bloc des dépendances:

    dependencies {
        compile project(':openCVLibraryXYZ')
        //rest of code
    }
    

Où XYZ est la version exacte que vous téléchargez, par exemple dans mon cas:

    dependencies {
        compile project(':openCVLibrary320')
        //rest of code
    }
36
yshahak

Android Studio 3.4 + OpenCV 4.1

  1. Téléchargez le dernier fichier OpenCV Zip à partir de ici (la version la plus récente est 4.1.0) et décompressez-le dans votre espace de travail ou dans un autre dossier.

  2. Créez un nouveau projet Android Studio normalement. Cliquez sur File->New->Import Module, naviguez jusqu'à /path_to_unzipped_files/OpenCV-Android-sdk/sdk/Java, définissez le nom du module sur opencv, cliquez sur Next et désélectionnez toutes les options de l'écran.

  3. Activez le mode d'affichage de fichier Project (le mode par défaut est Android). Dans le fichier opencv/build.gradle, remplacez apply plugin: 'com.Android.application' par apply plugin: 'com.Android.library' et remplacez application ID "org.opencv" par

    minSdkVersion 21
    targetSdkVersion 28
    

    (selon les valeurs dans app/build.gradle). Synchroniser le projet avec les fichiers Gradle.

  4. Ajouter cette chaîne au bloc des dépendances dans le fichier app/build.gradle

    dependencies {
        ...
        implementation project(path: ':opencv')
        ...
    }
    
  5. Sélectionnez à nouveau Android mode d'affichage du fichier. Faites un clic droit sur le module app et allez à New->Folder->JNI Folder. Sélectionnez changer l'emplacement du dossier et définissez src/main/jniLibs/.

  6. Sélectionnez à nouveau Project mode d'affichage de fichier et copiez tous les dossiers de /path_to_unzipped_files/OpenCV-Android-sdk/sdk/native/libs vers app/src/main/jniLibs.

  7. Toujours en mode de visualisation de fichier Android, cliquez avec le bouton droit de la souris sur le module app et choisissez Link C++ Project with Gradle. Sélectionnez Build System ndk-build et le chemin d'accès à OpenCV.mk fichier /path_to_unzipped_files/OpenCV-Android-sdk/sdk/native/jni/OpenCV.mk.

    path_to_unzipped_files ne doit pas contenir d'espaces, sinon vous obtiendrez une erreur!

Pour vérifier l’initialisation OpenCV, ajoutez le message Toast à la méthode MainActivity onCreate():

Toast.makeText(MainActivity.this, String.valueOf(OpenCVLoader.initDebug()), Toast.LENGTH_LONG).show();

Si l'initialisation réussit, vous verrez true dans le message Toast, sinon vous verrez false.

4
Plo_Koon

Cela a fonctionné pour moi et était aussi simple que d'ajouter une dépendance à un grade:

https://bintray.com/seesaa/maven/opencv#

https://github.com/seesaa/opencv-Android

Le seul inconvénient était que je devais utiliser un périphérique de débogage matériel car les émulateurs arm étaient trop lents pour moi (comme le dit AVD Manager), et, comme décrit dans le fichier README du référentiel, cette version n'inclut pas le support x86 ou x86_64. 

Il semble construire et le test suggéré:

static {
    OpenCVLoader.initDebug();
}

crache un tas de résultats qui me paraissent assez bien.

0
The Naumannator

Toute personne confrontée à un problème lors de la création de jniLibs cpp est montrée ..juste d’ajouter ndk ..

0
Aklesh Singh

Intégration opencv avec Android studio

Ceux qui veulent avoir une vidéo youtube pour la même chose, essayez avec la dernière version de opencv (3.4.0), mais ma chance n’était pas suffisante pour la version montrée (2.4.9) ( opencv releases ).

0
Prakhar1001