Utilisation du module OpenCV non libre sous Android

J’essaie d’utiliser le module non libre avec OpenCV sur Android. Je suis cette réponse https://stackoverflow.com/a/28557686/6126070 mais j’ai du mal à comprendre car il s’agit de ma première application utilisant Android et NDK.

Pour le moment, OpenCV (sans non-free) travaille sur mon application et je l’utilise en code C ++ avec NDK et JNI. Ce qui me pose problème, c’est de modifier mes fichiers Android.mk et Application.mk actuels dans la réponse à la compilation non libre.

Voici mes fichiers Android.mk et Application.mk avec la structure de mon projet.

Android.mk:

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) #opencv OPENCVROOT:= C:\OpenCV-2.4.10-android-sdk OPENCV_CAMERA_MODULES:=on OPENCV_INSTALL_MODULES:=on OPENCV_LIB_TYPE:=SHARED include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk LOCAL_SRC_FILES := com_example_adrien_ndkopencvtest4_OpencvNativeClass.cpp LOCAL_LDLIBS += -llog LOCAL_MODULE := MyOpencvLibs include $(BUILD_SHARED_LIBRARY) 

Application.mk:

 APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi-v7a APP_PLATFORM := android-16 

Structure du projet: entrez la description de l'image ici

Mon projet se bloque avec la ligne #include dans mon fichier jni .h, c’est pourquoi j’essaie d’importer un module non libre.

Donc, comme je l’ai dit, j’essaie de mettre en œuvre la réponse ci-dessus, mais j’ai des problèmes.

Dans la réponse:

Construire le module non libre:

Étape 1: Je copie les fichiers très bien.

Étape 2: Je ne comprends pas où je suis censé créer ce dossier, dans mon application ou dans mon ordinateur?

Étape 3: Voici le gros problème, je ne sais pas comment je peux fusionner les fichiers Android.mk et Application.mk fournis dans la réponse avec les miens. De plus, je ne comprends pas la ligne ” cd dans le dossier du projet libnonfree et tapez ndk-build pour construire le libnonfree.so.libnonfree.so.

Pour la “Construction d’un exemple d’application”, je ne suis pas encore allé dans cette partie, mais je suppose que je n’ai pas besoin de le faire. Je peux simplement continuer à utiliser OpenCV avec mon application, à l’exception du #include la ligne fonctionnera.

J’ai essayé de clarifier cette question, si vous avez besoin de plus d’informations, je la modifierai avec plaisir.

Étape 2: Créez un dossier sous votre fichier jniLibs ou mettez le fichier 4 directement.

Étape 3:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) #opencv OPENCVROOT:= C:\OpenCV-2.4.10-android-sdk OPENCV_CAMERA_MODULES:=on OPENCV_INSTALL_MODULES:=on OPENCV_LIB_TYPE:=SHARED include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk LOCAL_SRC_FILES := com_example_adrien_ndkopencvtest4_OpencvNativeClass.cpp LOCAL_LDLIBS += -llog LOCAL_MODULE := MyOpencvLibs include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_C_INCLUDES:= ${OPENCVROOT}/sdk/native/jni/include LOCAL_MODULE := nonfree LOCAL_CFLAGS := -Werror -O3 -ffast-math LOCAL_LDLIBS += -llog # for 2.4.8, delete the line precomp.cpp \ LOCAL_SRC_FILES := nonfree_init.cpp \ sift.cpp \ surf.cpp include $(BUILD_SHARED_LIBRARY) 

et vous pouvez rechercher comment append un outil externe dans android studio (ndk-build)