Uso no libre (SIFT, SURF) en android con java

Tengo problemas con el uso de metdos no libres en android. Los métodos SIFT y SURF no están incluidos en opencv-android-2.4.8. Son necesarios para ser cumplidos por separado.

Https://sites.google.com/site/wghsite/technical-notes/sift_surf_opencv_android

Este es el tutorial principal sobre la compilación de módulos no libres. Sin embargo, la parte jni para usuarios de java no está incluida. He buscado cómo utilizar las bibliotecas .so compiladas, pero no pude lograrlo.

Me pregunto si alguien puede compartir la parte de jni para módulos no libres o una explicación detallada de ello, porque trabajo en ese tema durante una semana y no pude hacerlo.

Gracias.

    4 Solutions collect form web for “Uso no libre (SIFT, SURF) en android con java”

    Resolví el problema. Cuando usted sigue el tutorial (el enlace dado en la pregunta) obtendrá las bibliotecas necesarias (archivos .so). Para poder usarlos en java no es necesario implementar jni parte. Cuando carga las bibliotecas en su código java (System.load (libraryName)), puede utilizar métodos de tamizado y navegación como los otros detectores o descriptores. Usted puede utilizar directamente el patrón de código proporcionado por el opencv-2.4.8.

    Suponiendo que ya has conseguido OpenCV 4 Android para trabajar en tu dispositivo Android;

    1) Puse libnonfree.so, libopencv_java.so y libgnustl_shared.so (no estoy seguro si el último es necesario) en la carpeta correcta para su plataforma, en mi caso jniLibs / armeabi-v7a. Ya se puede encontrar la versión compilada en la carpeta de demostración aquí; https://github.com/bkornel/opencv_android_nonfree

    2) Asegúrese de cargar ambas bibliotecas.

    static { System.loadLibrary("opencv_java"); System.loadLibrary("nonfree"); } 

    Esto era todo lo que se requería para que funcionara para mí.

    Soy el autor del tutorial. Voy a añadir otro tutorial que muestra la parte JNI. Espero que eso ayude. Vuelve a revisar el tutorial en los próximos días. Lo publicaré pronto.

    @fetifati, ¿Quieres decir que si copio libnonfree.so y libopencv_java.so en decir lib / armeabi carpeta y hacer System.load ("nonfree"); System.load ("opencv_java"), puedo usar código como:

     private static final FeatureDetector detector = FeatureDetector .create(FeatureDetector.SIFT); private static final DescriptorExtractor extractor = DescriptorExtractor .create(DescriptorExtractor.SIFT); 

    Directamente … No parece funcionar para mí. Estoy recibiendo algunos errores.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.