web-dev-qa-db-fra.com

Comment intégrer OpenCV Manager dans une application Android

J'utilise OpenCV2.4.7 Library dans mon application Android. Lorsque l'application démarre, elle se rend sur Google Play Store pour application, appelée OpenCV Manager. Est-il possible d'intégrer cette application dans mon apk Android parce que nous utilisons déjà la bibliothèque OpenCV, alors pourquoi cette application a-t-elle besoin du moteur OpenCV? Y a-t-il un moyen d'intégrer ce moteur?

28
Vijay007

Oui. Pour intégrer OpenCV dans votre application et éviter l'installation explicite d'OpenCV Manager, vous devez d'abord lire le document suivant fourni par OpenCV.

Première lecture -> Initialisation statique de OpenCV

Après avoir suivi les étapes avec succès, vous devez écrire le code suivant pour activer OpenCV dans le code d'initialisation de votre application avant d'appeler l'API OpenCV. Cela peut être fait, par exemple, dans la section statique de la classe d'activité:

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
}

Références:

  1. http://answers.opencv.org/question/2033/use-opencv-on-Android-without-manager/
  2. Initialisation statique sur OpenCV Android

Modifier

Selon le nouveau scénario de Document et merci à @rozhok pour les nouvelles informations fournies, la méthode initDebug () ne peut pas être utilisée pour la production

Remarque Cette méthode est obsolète pour le code de production. Il est conçu uniquement à des fins expérimentales et de développement local. Si vous souhaitez publier votre approche d'utilisation de l'application avec l'initialisation asynchrone.

Vous devez utiliser la méthode suivante pour cela

Syntaxe

static boolean initAsync(String Version, Context AppContext, LoaderCallbackInterface Callback)

Exemple

public class Sample1Java extends Activity implements CvCameraViewListener {

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i(TAG, "OpenCV loaded successfully");
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

    @Override
    public void onResume()
    {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
    }

    ...
}

Références

  1. http://docs.opencv.org/doc/tutorials/introduction/Android_binary_package/dev_with_OCV_on_Android.html
22
Chintan Rathod

Voici ce que dit la documentation sur l'installation d'OpenCV Manager:

Le dossier apk contient les packages Android à installer sur le périphérique Android cible pour permettre l'accès à la bibliothèque OpenCV via l'API du gestionnaire OpenCV (voir les détails ci-dessous).

Sur les appareils de production ayant accès à Google Play Market (et à Internet), ces packages seront installés à partir de Market lors du premier démarrage d'une application à l'aide de l'API OpenCV Manager.

...

Remarque: L'installation à partir d'Internet est la méthode préférable car l'équipe OpenCV peut publier des versions mises à jour de ces packages sur le marché.

Vous pouvez en savoir plus à ce sujet ici: https://docs.opencv.org/3.0-beta/doc/tutorials/introduction/Android_binary_package/O4A_SDK.html#general-info

0
Luis Sandoval
  1. Insérez ces lignes après inclure $ (CLEAR_VARS) dans le fichier OpenCV.mk
    OPENCV_CAMERA_MODULES:=on
    OPENCV_INSTALL_MODULES:=on
    include D:/opencv_with/OpenCV-2.4.10-Android-sdk/sdk/native/jni/OpenCV.mk
    
  2. Dans le dossier libs de votre répertoire de projet actuel, copiez tous les dossiers à l'intérieur de libs OpenCV.

  3. Ajouter dans votre activité

    if (!OpenCVLoader.initDebug()) {
                Log.d("ERROR", "Unable to load OpenCV");
            } else {
                mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
            }
    
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
    
            @Override
            public void onManagerConnected(int status) {
                switch (status) {
                case LoaderCallbackInterface.SUCCESS: {
    
                    //Your opencv Operation code
    
                }
                }
            }
        };
    
0
MIkka Marmik