OpenCV dans Android Studio

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

Configuration avec nom "default" introuvable

Qu'est-ce qui ne va pas?

J'utilise Android Studio 1.0 avec gradle 2.2.1.

117
demandé sur Hakam Fostok 2014-12-10 19:40:55

6 réponses

les étapes ci-dessous pour utiliser Android OpenCV sdk dans Android Studio. Ceci est une version simplifiée de ceci( 1 ) donc répondre.

  1. télécharger dernier OpenCV sdk pour Android à partir de OpenCV.org et décompresser le fichier zip.
  2. importer OpenCV to Android Studio , à partir de Fichier - > nouveau - > module D'importation , choisir sdk/java dans le dossier décompressé opencv archive.
  3. version de mise à Jour.gradle sous module OpenCV importé pour mettre à jour 4 champs correspondant à la construction de votre projet.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion et d) targetSdkVersion.
  4. ajouter dépendance au module par Application - > Paramètres du Module , et sélectionner la Dépendances onglet. Cliquez sur + 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 de projet, droit-cliquer le module dépendant -> Ouvrir Les Paramètres Du Module
  5. Copie libs dossier sous sdk / native à Android Studio sous app/src / main .
  6. Dans Android Studio, renommer le copié libs répertoire jniLibs et nous avons fini.

Étape (6) est depuis Android studio attend des libs natifs dans app/src/main/jniLibs au lieu de l'ancien dossier libs . Pour les nouveaux à Android OpenCV, ne manquez pas en dessous des marches

  • include static{ System.loadLibrary("opencv_java"); } (Note: pour OpenCV version 3 à cette étape, vous devriez plutôt charger la bibliothèque opencv_java3 .)
  • pour step (5), Si vous ignorez une plate-forme libs comme x86, assurez-vous que votre périphérique/émulateur n'est pas sur cette plate-forme.

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

  1. Android OpenCV SDK - OpenCV.org maintenu Java wrapper Android. Je suggère celui-ci.
  2. OpenCV Java - OpenCV.org maintenu générés automatiquement, bureau wrapper Java.
  3. JavaCV - populaire Java wrapper maintenu par un(des) développeur (s) indépendant (s). Pas spécifiquement Androïde. Cette bibliothèque pourrait sortir de la synchronisation avec OpenCV plus récent version.
274
répondu Kiran 2017-07-13 17:55:26

Integrating Opencv3.1.0 dans Android Studio v1.4.1 , instructions avec des détails supplémentaires et ce-est-ce-que-vous-devriez-obtenir type screenshots.

la plus grande partie du crédit va à Kiran, Kool, 1", et SteveLiles plus de opencv.org pour leurs explications. J'ajoute cette réponse parce que je crois que L'interface D'Android Studio est maintenant assez stable pour travailler sur ce type de truc d'intégration. Je dois aussi écrire ces instructions. de toute façon pour notre projet.

A. S. expérimentés développeurs trouveront certains de ce pédant. Cette réponse s'adresse aux personnes ayant une expérience limitée dans Android Studio.

  1. créez un nouveau projet studio Android en utilisant l'assistant de projet (Menu:/Fichier/Nouveau projet):

    • Appel " cvtest1 "
    • facteur de forme: API 19, Android 4.4 (KitKat)
    • Blank Activity named MainActivity

      vous devriez avoir un répertoire cvtest1 où ce projet est stocké. (la barre de titre D'Android studio vous montre où cvtest1 est lorsque vous ouvrez le projet)

  2. vérifiez que votre application fonctionne correctement. Essayez de changer quelque chose comme le texte" Hello World " pour confirmer que le cycle de construction/test est OK pour vous. (Je teste avec un émulateur D'un appareil API 19).

  3. Téléchargez le pack OpenCV pour Android v3.1.0 et décompresse-le dans un répertoire temporaire quelque part. (Assurez-vous que C'est le paquet spécifiquement pour Android et pas seulement le paquet OpenCV pour Java.) Je vais appeler ce répertoire " unzip-dir "ci-dessous unzip-dir vous devriez avoir un répertoire sdk/native/libs avec des sous-répertoires qui commencent par des choses comme arm ..., mips ... et x86 ... (un pour chaque type d ' "architecture" Android fonctionne sur)

  4. de Android Studio importer OpenCV dans votre projet comme un module: Le Menu: /Fichier/Nouveau/Import_Module :

    • Source-directory: {unzip-dir} / sdk / java
    • nom du Module: Android studio remplit automatiquement ce champ avec openCVLibrary310 (le nom exact n'a probablement pas d'importance, mais nous irons avec cela).
    • Cliquez sur suivant . Vous obtenez un écran avec trois cases à cocher et des questions sur les jarres, les bibliothèques et les options d'importation. Tous les trois être vérifiée. Cliquez sur terminer.

      Android Studio commence à importer le module et vous êtes montré un importation-résumé.txt fichier qui a une liste de ce qui n'a pas été importé (principalement des fichiers javadoc) et d'autres éléments d'information. enter image description here

      mais vous obtenez également un message d'erreur disant n'a pas trouvé la cible avec la chaîne de hachage 'android-14'... . Cela arrive parce que la construction.le fichier gradle dans le fichier zip OpenCV que vous avez téléchargé dit de compiler en utilisant L'API android version 14, ce que par défaut vous n'avez pas avec Android Studio v1.4.1. enter image description here

  5. ouvrir le dialogue sur la structure du projet ( Menu:/File/Project_Structure ). Sélectionnez le module" app", cliquez sur le Dépendances tab et ajouter : openCVLibrary310 comme une dépendance de Module. Lorsque vous sélectionnez ajouter/Module_Dependency cela doit apparaître dans la liste des modules que vous pouvez ajouter. Il apparaîtra maintenant comme une dépendance, mais vous obtiendrez quelques erreurs supplémentaires impossible-find-android-14 dans le journal des événements.

  6. Regarder dans le "1519160920 de construire".Grad fichier pour votre application module. Il y a plusieurs constructions.fichiers gradle dans un projet Android. Celui que vous voulez est dans le répertoire cvtest1/app et du point de vue du projet il ressemble à construire.gradle (Module: app) . Notez les valeurs de ces quatre champs:

    • compileSDKVersion (mine dit 23)
    • buildToolsVersion (mine dit 23.0.2)
    • minSdkVersion (mine dit 19)
    • targetSdkVersion (mine dit 23)
  7. votre projet a maintenant un répertoire cvtest1/OpenCVLibrary310 mais il n'est pas visible du point de vue du projet:

enter image description here

utilisez un autre outil, tel qu'un gestionnaire de fichiers, et allez dans ce répertoire. Vous pouvez également changer la vue du projet de Android à dossiers de projet et vous pouvez trouver ce répertoire comme montré dans cette capture d'écran: enter image description here

à l'intérieur il y a un autre construire.gradle fichier (il est surligné dans la capture d'écran ci-dessus). Mettez à jour ce fichier avec les quatre valeurs de l'étape 6.

  1. Resynchroniser votre projet, puis nettoyer et reconstruire il. (Menu: / Build / Clean_Project ) il devrait nettoyer et construire sans erreurs et vous devriez voir de nombreuses références à : openCVLibrary310 dans le 0: Messages écran.

    enter image description here

    à ce point le module devrait apparaître dans la hiérarchie du projet comme openCVLibrary310 , tout comme app . (Notez que dans ce petit menu déroulant je suis revenu de Project View à Android View ). Vous devriez également voir une construction supplémentaire .gradle fichier sous "Gradle Scripts" mais je trouve L'interface Android Studio un peu glitchy et parfois il ne le fait pas tout de suite. Essayez donc de resynchrer, nettoyer, et même redémarrer Android Studio.

    vous devriez voir le module openCVLibrary310 avec toutes les fonctions OpenCV sous java comme sur cette capture d'écran:

    enter image description here

  2. Copiez le répertoire {unzip-dir}/sdk/native/libs (et tout ce qui s'y trouve) dans votre projet Android, à cvtest1/OpenCVLibrary310 / src / main/ , puis renommez votre copie de libs à jniLibs . Vous devriez maintenant avoir un répertoire cvtest1/OpenCVLibrary310/src/main/jniLibs . Resynchroniser votre projet et de ce répertoire devrait maintenant apparaît dans la vue de projet sous openCVLibrary310 .

    enter image description here

  3. aller à la méthode onCreate de activité principale.java et annexe ce code:

    if (!OpenCVLoader.initDebug()) {
        Log.e(this.getClass().getSimpleName(), "  OpenCVLoader.initDebug(), not working.");
    } else {
        Log.d(this.getClass().getSimpleName(), "  OpenCVLoader.initDebug(), working.");
    }
    

    lancez votre application. Vous devriez voir des lignes comme celle-ci dans le Moniteur Android: enter image description here (Je ne sais pas pourquoi cette ligne avec le message d'erreur est là)

  4. essayez maintenant d'utiliser un code openCV. Dans l'exemple ci-dessous, j'ai copié un .fichier jpg dans le répertoire cache de l'application cvtest1 sur l'émulateur android. Le code sous charge ceci image, exécute l'algorithme de détection de bord canny et écrit ensuite les résultats à A.png fichier dans le même répertoire.

    mettez ce code juste en dessous du code de l'étape précédente et modifiez-le pour correspondre à vos propres fichiers/répertoires.

    String inputFileName="simm_01";
    String inputExtension = "jpg";
    String inputDir = getCacheDir().getAbsolutePath();  // use the cache directory for i/o
    String outputDir = getCacheDir().getAbsolutePath();
    String outputExtension = "png";
    String inputFilePath = inputDir + File.separator + inputFileName + "." + inputExtension;
    
    
    Log.d (this.getClass().getSimpleName(), "loading " + inputFilePath + "...");
    Mat image = Imgcodecs.imread(inputFilePath);  
    Log.d (this.getClass().getSimpleName(), "width of " + inputFileName + ": " + image.width());
    // if width is 0 then it did not read your image.
    
    
    // for the canny edge detection algorithm, play with these to see different results
    int threshold1 = 70;
    int threshold2 = 100;
    
    Mat im_canny = new Mat();  // you have to initialize output image before giving it to the Canny method
    Imgproc.Canny(image, im_canny, threshold1, threshold2);
    String cannyFilename = outputDir + File.separator + inputFileName + "_canny-" + threshold1 + "-" + threshold2 + "." + outputExtension;
    Log.d (this.getClass().getSimpleName(), "Writing " + cannyFilename);
    Imgcodecs.imwrite(cannyFilename, im_canny);
    
  5. lancez votre application. Votre émulateur devrait créer une image "de bord" en noir et blanc. Vous pouvez utiliser le moniteur de périphérique Android pour récupérer la sortie ou écrire une activité à afficher il.

Le Pièges :

  • si vous abaissez votre plate-forme cible en dessous de KitKat, certaines bibliothèques OpenCV ne fonctionneront plus, en particulier les classes liées à org.opencv.Android.Camera2Renderer et autres classes apparentées. Vous pouvez probablement contourner cela en enlevant simplement l'apprpriate OpenCV .les fichiers java.
  • si vous soulevez votre plateforme cible à Lollipop ou au-dessus de mon exemple de chargement d'un fichier pourrait ne pas fonctionner parce que l'utilisation de chemins de fichiers absolus est mal vue. Donc vous pourriez avoir à changer l'exemple pour charger un fichier à partir de la galerie ou d'ailleurs. Il y a de nombreux exemples qui circulent.
132
répondu ssimm 2016-06-14 18:34:21

Pour tous ceux qui pensaient qu'ils veulent fuir à toutes les étapes et les captures d'écran sur le (grand!) réponses 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 est parfait).
  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 Mai une des versions plus récentes).
  3. décompressez le fichier zip, le meilleur endroit est dans votre dossier espace de travail, mais cela n'a pas vraiment d'importance.
  4. à l'intérieur de Android Studio , cliquez sur File->New-> Import Module et naviguez vers \path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java et appuyez sur Ok, puis acceptez toutes les boîtes de dialogue par défaut.
  5. dans le fichier gradle de votre module app , ajoutez ceci au bloc de 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
    }
32
répondu yshahak 2018-01-17 13:41:30

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

0
répondu Aklesh Singh 2017-08-17 13:41:02

intégration Opencv avec android studio

Ceux qui veulent avoir une vidéo de youtube, de même essayer avec la dernière version d'opencv(3.4.0), ma chance n'était pas assez bon pour montré version(2.4.9)( opencv libère ).

0
répondu Prakhar1001 2018-02-20 22:34:19

vous pouvez aussi ajouter cette bibliothèque dans build.Grad

dependencies{
   compile 'org.opencv:opencv-android:2.4.8'
}
-3
répondu Istiyak 2017-04-16 16:32:28